SQL-SERVER 2000 のストアドプロシジャーで、ORDER 句 、WHERE 句が、実行する都度に変わる場合、みなさんどんな風にSQLかいてますか?


やっぱり、sp_executesql で、動的実行するのが普通なんでしょうか、というか、他の方法が思いつかないので、聞いてみます

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/08/28 12:23:35
  • 終了:--

回答(2件)

id:sukkyxp No.1

sukkyxp回答回数43ベストアンサー獲得回数02005/08/28 14:35:33

ポイント100pt

CASE文で条件によってORDER節、WHERE節を作成するのはどうでしょうか?

id:rikimaru

where句は素晴らしい解決方法でした

order句もcase使えるのかな、あとで試してみます

2005/08/28 19:32:01
id:toriaezu No.2

toriaezu回答回数119ベストアンサー獲得回数72005/08/28 15:05:14

ポイント100pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

どういったことを実現したいのか、その要件にも関わってきますが、基本的には

1.sp_executesqlによる動的実行

2.サブクエリによるORDER 句 、WHERE 句の変更

3.プログラム側で動的にSQL文を生成して実行

この3つになるように思います。

要はORDER 句 、WHERE 句がどのように変わるのか、その変化は数通りしかないのか、

それとも予測できないほどにあるのか……といったことで実装方法は変えられますよ、ということです。

私の意見としては3はラクですが負荷が高くなりやすいので、やはり1がよいのかなあといった印象を持っています。

うまく説明できなくてごめんなさい。参考になりましたでしょうか。

id:rikimaru

そうですね、確かに3の方法が一番普通に考えるんですがsqlがコンパイルされない、sqlインジェクションが怖いと色々あって思案していました

大体同じだったので安心しました

最初のかたの答えと合わせて活用させてもらいます

ありがとうございました

2005/08/28 19:40:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません