我想問一下如何通過一個SSIS變量作爲OLE DB命令在數據流中使用的存儲過程的參數?通過OLE DB命令傳遞一個SSIS變量值作爲SP的一個參數
我試圖寫下面的SQL命令,但不工作: EXEC [dbo]。[CalculateProcess]?,?,?
接收錯誤:(δ值)
No value given for one or more required parameters.
第一和第二值是從平面文件源來作爲ID和名稱。第三個應該是SSIS變量@howMany的值。我該怎麼做?感謝幫助。
編輯:
讓我們假設我的數據集是:
ID NAME
1 X
2 Y
3 Z
4
5 A
在這種情況下,應@howMany在年底爲4。如果當前NAME不爲空,則應在每個OLE DB命令工作後動態更新該值。
ID NAME
1 X
@howMany = 1
2 Y
@howMany = 2
3 Z
@howMany = 3
4
@howMany = 3
5 A
@howMany = 4
編輯2: 當我做添加@howMany作爲派生列,它正在發生,如:
ID NAME @howMany
1 X 0
2 Y 0
3 Z 0
4 0
5 A 0
而0值是住,每行後不會得到更新。寫完OUTPUT後?在SQL命令中沒有解決嗎?我的錯誤在哪裏?
編輯3:存儲過程 -
CREATE PROCEDURE [dbo].[CalculateProcess]
@ID int,
@name varchar(30),
@howMany int output
AS
BEGIN
SET NOCOUNT ON;
if (@name is not null)
BEGIN
set @howMany = @howMany + 1;
END
END
編輯4:我添加了一個腳本組件獲得平面文件源之後。 Name是INPUT參數,NameCounter是我的輸出列。我的腳本是:
private int nameCounter;
public override void PreExecute()
{
nameCounter= 0;
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (Row.Name != null)
{
nameCounter++;
}
Row.NameCounter= nameCounter;
}
腳本組件連接到我的OLE DB命令。這將生成一個名爲NameCounter的列,並將其添加到OLE DB命令中的所有數據。現在我只是不知道如何獲得NameCounter的值,並將其分配給SSIS變量?
變量'@ howMany'這是一個輸出變量? –
是的,它是....... –
你可以顯示存儲過程的定義嗎? –