0

ole db ソースの各レコードの sp の結果を ole db 宛先に挿入しようとしています。

sp はレコード セットを返します

SSISでストアドプロシージャを呼び出す方法を見つけまし た

しかし、OleDb コマンドの出力列に出力列が表示されません。

ここに私のSPがあります:

create PROCEDURE [dbo].[GetData] (
    @user        varchar(50)
) AS
set nocount on
-- Publish metadata for ssis
if 1=0
begin
    select '' x, '' y, '' z
end

declare @user_tmp table
(
    x varchar(max),
    y varchar(max),
    z varchar(max)
)

insert into @user_tmp
    select 'x1' x, 'y1' y, 'z1' z

select distinct *  from @user_tmp
set nocount off 
4

3 に答える 3

0
  • データフローのストアドプロシージャの出力を取得するには、 OLEDBソースを使用してください。
  • ソースとしてOLEDBコマンドを使用しないでください。
  • OLE DBソース(SP結果データを取得する)の出力の宛先には、OLEDB宛先を使用してください。

  • ソースと宛先の間にETL設計の選択肢または要件(派生列、データ変換など)を追加します。

OLE DBコマンドは、データのフローを作成するためではなく、通過する行ごとにSQLを実行するために使用されます。たとえば、行ごとのタイプの実行が必要です。

于 2012-04-26T18:17:43.297 に答える
0

おそらく挿入ステートメントの結果を取得していますか?SET NOCOUNT ON を試してください。

http://msdn.microsoft.com/en-us/library/aa259204(SQL.80).aspx

于 2009-03-24T22:47:47.550 に答える
0

テーブル変数を試したことはありませんが、一時テーブルを使用すると SSIS がフィールドを認識せず、テーブル変数にも同じ制限がある可能性があることはわかっています。ただし、CTE を使用するとフィールドが認識されます。CTE を使用するように変換できる場合は、proc が機能する可能性があります。

于 2011-09-19T16:47:05.183 に答える