簡體   English   中英

使用T-SQL語句增加值的行

[英]Augmenting Rows With Value From T-SQL Statement

我正在使用SSIS 2012將Excel文件導入數據庫。 我在導入時需要填充到數據庫中的字段之一無法存儲在Excel文件中。 僅在數據庫中創建記錄時才能知道該字段的值。 我正在使用的特定軟件在另一個數據庫中存儲該字段的上次使用值。 在導入時創建記錄時,我需要增加此字段並將新值插入新記錄中。 我有一個生成該值的T-SQL腳本,但我對SSIS的了解不足,無法知道如何在導入期間為每一行獲取該值。

這是我用來生成所需值的腳本:

--Declare some variables
DECLARE @I_sCompanyID smallint,
@O_mNoteIndex numeric(19,5),
@O_iErrorState int

--Get the CompanyID
select @I_sCompanyID = CMPANYID
from DYNAMICS..SY01500
where INTERID = DB_Name()

--Get and increment the next note index
exec DYNAMICS.[dbo].[smGetNextNoteIndex] @I_sCompanyID, 1, @O_mNoteIndex output, @O_iErrorState output

--Print the Next Note Index
SELECT @O_mNoteIndex

想到的選擇是使用Script Component將名為O_mNoteIndex的列添加到數據流中。 基本上,您將需要使用上面的TSQL代碼,並與OleDBSqlClientOdbc一起使用來查詢Dynamics服務器並生成您的ID。

您將需要將該列添加到輸出緩沖區中,並為其分配tsql值。 我以前沒有找到任何探索該方法的答案,但msdn網站應該可以幫助您入門

我建議您運行上面的腳本並將結果返回到SSIS變量中。 然后在計算列轉換中添加該變量。 假設您只需要在加載數據集之前運行一次該腳本。 如果需要按記錄運行,則需要使用@billinkc的方法。

或者,如果要避免使用腳本,則可以將源數據加載到OLEDB記錄集中,然后在For Each循環中使用它,並為該循環的每次迭代調用該腳本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM