0

でSQL select ステートメントを実行している場合を次に示しますlocal string。テーブルに対して通常の選択クエリを実行すると、機能します。

select * from tablesname 

しかし、次のケースがある場合:

declare @string nvarchar(400)

set @string = N'from tablesname'

を実行するselect * from @stringと、期待どおりに動作しません。

この方法でのみselectステートメントを実行したいので、この問題を解決するために私に提案してください。他の方法を試す必要がある場合は、それを提案してください。

ありがとう、タウシフ。

4

1 に答える 1

1

質問に MySQL がタグ付けされているため、MySQL を使用していると仮定しますが、これset @string = N'from tablesname'は、MS SQL Server などを使用していることを示唆しています。

SET @yourDynamicTablename = 'yourTable';
SET @sql = CONCAT('SELECT * FROM ', @yourDynamicTablename );
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

それをストアドプロシージャに入れたいと思うかもしれません。

文字列から選択できないため、試みは機能しませんでした。SQL インジェクション攻撃の回避にも役立つプリペアド ステートメントの詳細については、マニュアルを参照してください。

于 2012-08-16T07:44:20.137 に答える