質問

私のストアド プロシージャは、SQL Server 2005 内の SQL 統合パッケージから次のように呼び出されます。

執行?= Validation.PopulateFaultsFileDetails ?、0

何が何だか分かりませんが?手段

役に立ちましたか?

解決

この SQL ステートメントが呼び出されると、両方の疑問符 (?) が置き換えられます。最初の変数は、ストアド プロシージャの戻り値を受け取る変数に置き換えられます。2 番目の値は、ストアド プロシージャに渡される値に置き換えられます。このステートメントを使用するコードは次のようになります (疑似コード)。

dim result
SQL = "EXEC ? = Validation.PopulateFaultsFileDetails ? , 0"
SQL.execute(result, 99)    // pass in 99 to the stored proc
debug.print result

これにより、次の 3 つの利点が得られます。

  1. SQL の同じ部分を異なる値で再利用できます
  2. 戻り値を取得して、成功/エラーをテストできます。
  3. 渡す値が文字列の場合は、正しくエスケープされ、アプリで SQL インジェクションの脆弱性が発生するリスクが軽減されます。

他のヒント

?は変数、正確にはパラメータを表します。最初 ?はストアド プロシージャの戻り値で、2 番目はストアド プロシージャの最初のパラメータです

ありがとう、答えてくれてありがとう。

@FaultSFileName varchar declare @faultssfileid @faultsfileid = validation.populatefaultssfiledetails 'samemonth test'、@faultsfileid select @faultsfileid

しかし、統合パッケージで入力パラメータを「SameMonth Test.txt」として渡すと、次のようなエラーが発生します。

パラメータ名には、序数型と名前付き型を混在させることはできません。」考えられる失敗の理由:クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメータが正しく設定されていない、または接続が正しく確立されていない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top