1

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

エグゼク? = Validation.PopulateFaultsFileDetails ? , 0

よくわかりませんが、何ですか?意味

4

3 に答える 3

1

この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インジェクションの脆弱性のリスクを軽減する必要があります。
于 2008-09-23T10:27:51.380 に答える
1

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

于 2008-09-23T09:50:06.807 に答える
0

ありがとう私は答えに感謝します。

DECLARE @FaultsFileName varchar DECLARE @FaultsFileID int EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails'SameMonth Test.txt'、@ FaultsFileID SELECT @FaultsFileIDを使用して、ストアドプロシージャを正常に実行できました。

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

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

于 2008-09-23T10:34:14.110 に答える