-2

Sybase データベースで、次のようなことを行うことはできますか? 変数の使用は避けたいと思います。変数なしでは機能しない場合、select から取得した行ごとにステートメントを実行する簡単な方法はありますか?

execute ( '
select * from table
where ID = ''123456''
')
4

3 に答える 3

0

はい、Sjoerdがexecコマンドで言ったように、それを行うことができますが、2つの主な理由から、あなたが示した形式ではお勧めできません:

  1. 文字列をパラメーターと連結すると、 SQL インジェクションに対して脆弱になります
  2. 文字列のパラメーターを変更すると、SQL のハッシュも変更され、SQL Server が実行計画をキャッシュできなくなります。

この問題を克服するために、ストアド プロシージャsp_executesqlを使用して、パラメーターを使用して動的 SQL を実行できます ( T-SQL: 動的 SQL でパラメーターを使用する方法は? )。

于 2014-02-26T16:26:02.253 に答える
0

いいえ、クエリは引用符で囲まれているため、クエリではなく文字列です。クエリの場合、結果はおそらくテーブルからの行のセットであり、SQL ステートメントとして実行することはできません。

于 2014-02-26T16:15:30.117 に答える
0

これは動的 SQLと呼ばれ、 execコマンドで動作するはずです。

于 2014-02-26T16:20:13.953 に答える