1

Google とスタック オーバーフローの両方を介して一連の検索を行いましたが、そこに回答がある場合、探している回答を提供する検索クエリを思いつくことができませんでした。

ASP.net Web サイトで使用する関数のモジュールを作成して、Microsoft SQL Server DB に接続してクエリを実行するという面倒な作業をすべて処理しています。私は現在、クエリを実行する関数に取り組んでおり、SQL パラメーターの配列であるオプションの関数パラメーターを許可することにしました。

オプションの SQL パラメータが渡された関数で、渡された SQL クエリをチェックして、名前付きパラメータがあるかどうかを確認したいと思います。SQL クエリに名前付きパラメーターがある場合は、オプションの SQL パラメーターが実際に渡されたことを確認してください。SQL クエリに名前付きパラメータがない場合は、SQL パラメータが渡されていないことを確認してください。例えば:

  • SQL クエリ = SELECT * FROM MyTable WHERE ID = @TheID→ 関数呼び出しには SQL パラメータが必要です。
  • SQL クエリ = SELECT GETDATE()→ 関数呼び出しに SQL パラメータを指定してはなりません。

私の皆さんへの質問は、(パラメータの名前を知らなくても) 名前付きパラメータの SQL クエリである文字列を「検索」する最良の方法は何かということです。「@」文字で文字列を検索するだけでは気をつけています。その文字で名前を付けた列を持つことができることをどこかで読んだからです(例:[name@domain])。おそらく、正規表現を使用して「=」の後に任意の数の空白と「@」を検索できますか?

4

2 に答える 2

0

@そのキャラクターを使えない理由はありません。@列ではなく変数であるため、名前に を含めないでください。という名前の変数を持つことはできません@(var@iable)

sp_executesqlを確認してください。あなたがやろうとしていることと非常によく似たことをする良い例です

于 2013-02-22T01:53:42.757 に答える
0

.net の場合、

  function checkQuery (byVal myQuery As String)

    return not instr(myQuery,"@") == 0
end function

クエリに「@」が含まれている場合は true を返します

于 2013-02-22T01:56:46.930 に答える