OKは、私は、検索ストアドプロシージャ内のコード行を持っている:動的SQLをエスケープするより洗練された方法ですか?
SET @where = 'job_code = ''' + REPLACE(@job_code, '''', '''''') + ''''
と私は合理化したい2つの操作が基本的にあります - 単一引用符で連結した値を囲む第1のビーイング。明らかに、上記のステートメントでは、を2つ使用して''
をエスケープしてから、'
という文字列を終了して、実際の値を連結することができます。より良い方法が必要です!
操作の2番目はREPLACE(@job_code, '''', '''''')
で、フィールドにある単一引用符をエスケープします。
このコード行を全体的に書く上で、よりエレガントな方法はありませんか?
は、私はそれがESCAPE
キーワードだと思ったんが、それはLIKE
声明にしっかりと結ばれていますので、何もそこに行きます。
動的SQLを連結するのではなく、動的SQLに渡すことを考えましたか?ハードコーディングされた値は、パラメータスニッフィングの問題を回避するのに適していますが、ワークロードに応じて、これはもっと簡単なオプションです。 –
@ Love2Learn、それは私が考えているものではありませんが、それについて考えた後、私はストアドプロシージャをそのままの状態に保ち、どの消費者にも使用できるようにしたいと思っています。そのような仮定を加えることは、それを消耗させることをより困難にするでしょう。 –
'' 'に変数を使うと読みやすくなりますが、それほど大きな改善はありません。 –