0

ユーザーがデータベースを検索するための検索フォームを作成しています。フォームには、すべてオプションの複数のフィールドが含まれます。以下を含むフィールド:

  1. 会社名
  2. 会社コード
  3. 業種(サービスまたは製品)
  4. 製品またはサービス
  5. 製品またはサービスのサブタイプ --> #4 で選択した内容によって異なります

基本的に、ユーザーはすべてのフィールドまたは一部のフィールドに入力して、フォームを送信できます。このためにSQLをどのように処理するのが最善ですか? 動的 SQL を使用して、Web ページで where 句を作成し、それを SQL ストアド プロシージャに転送して where 句として使用するのが最善ですか? または、すべての値をストアド プロシージャに渡して、where 句を動的に作成する方がよいでしょうか。また、動的SQLが唯一の方法ですか?EXECUTE(@SQLStatement) の使用が適切かどうかはわかりませんでした。

4

2 に答える 2

2

動的 SQL が唯一の方法ではありません。次のような方法で回避できればより良いでしょう: http://www.sommarskog.se/dyn-search.html

上記の方法でパフォーマンスが得られず、動的 SQL を使用する場合は、Web ページが SQL を構築して実行することを許可しないでください。SQL が注入されることになります。また、サニタイズが非常に難しいため、テキスト文字列が渡されないようにしてください。理想的には、動的 SQL を作成するための数値のみ (ID など) のパラメーターを Web ページに渡すようにします。

動的 SQL を使用する場合は、次のすべてを必ずお読みください: http://www.sommarskog.se/dynamic_sql.html

于 2013-08-09T13:23:37.740 に答える