0

SSIS パッケージで次のエラーが発生します。

[SQL タスクの実行] エラー: クエリ "EXEC [spGetFileId] @zFileName, @Id" の実行が次のエラーで失敗しました: "変数 "User::FileId" に割り当てられている値の型は、現在の変数の型と異なります。 Variables may not change type during execution. 変数の型は厳密ですが、Object 型の変数は除きます。

SQL サーバーで単純なストアド プロシージャを実行するExecute SQL Taskを作成しました。

CREATE PROCEDURE [dbo].[spGetFileId]
    @zFileName VARCHAR(255),
    @Id INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  @Id = [Id]
    FROM    [tblFileLog]
    WHERE   [zFileName] = @zFileName
END

タスクのSQLStatementプロパティは次のとおりです。

EXEC [spGetFileId] @zFileName, @Id

次のSSIS 変数があります。

  • ユーザー::ファイル(文字列)
  • ユーザー::FileId (整数)

パラメータは次のように SQL タスクにマップされます。

  • 変数 | 方向 | タイプ | パラメータ
  • ユーザー::ファイル| 入力 | 文字列 | @zファイル名
  • ユーザー::ファイル ID | 出力 | Int32 | @ID

変数の型 ( int16int32およびint64; 文字列) をいじってみましたが、エラーは解決しません。助けてください!

編集:

PRINT @Idの前にa を追加したストアド プロシージャをデバッグするENDと、期待値が出力されますが、実行するとSELECT @Id(出力パラメーター) が返されますNULL

EDIT2:

同僚が問題を特定し、私が以下の回答としてマークした解決策を提供しました。

4

3 に答える 3

5

SQL 実行タスクSQLStatementには、パラメーターの後に次を含める必要があります。OUTPUT@Id

EXEC [spGetFileId] @zFileName, @Id OUTPUT

また、 @User::FileID パラメータを Output パラメータに設定して、変数を readonly ではなく readwrite として有効にする必要があります。これにより、変数への書き込みが可能になります。

于 2013-10-24T14:49:47.563 に答える
1

SQL 実行タスクに OLE DB 接続を使用していることを確認し、この記事を読んでください - http://www.bidn.com/blogs/BillBrannen/bidn-blog/612/stored-procedure-return-values-and- ssis の出力パラメーター

于 2013-12-01T19:06:54.480 に答える