etl過程過,往乙個資料庫表插入資料,插入的值往往需要到另外乙個資料庫讀取。例如下面的客戶跟蹤,需要乙個「專案id」,這個id需要到另乙個資料庫的一張表查詢,找到後返回給「客戶跟蹤」任務流。
執行sql任務「原專案id」的配置如下圖:
sql語句是:
if exists(select * from dbo.tb_bbproject where (pj_name = @pj_name))
select top 1 pj_id from dbo.tb_bbproject where (pj_name = @pj_name);
else
select –1
如果直接寫:select top 1 pj_id from dbo.tb_bbproject where (pj_name = @pj_name),當這個查詢沒有資料返回的時候,ssis就會報道如下錯誤:
無法為單行結果型別填充結果列。查詢返回了乙個空的結果集
這是因為「結果集」設定成單行,ssis就要求必須返回一行,不允許空行。
儲存結果的變數「原專案id」的資料型別需要設定成「object」,在其他地方使用的時候,ssis會自動轉成int型別,見下圖:
在「ole db 源資料來源」中使用「原專案id」
「ole db 源」需要的查詢引數需要使用「select * from tablename where fieldname=?」,只有ado net源才可以使用@引數名但是感到奇怪的是「ado net 源」(如下圖)查詢居然不可以設定查詢引數:
ssis 到別的表查詢臨時變數值
原文 ssis 到別的表查詢臨時變數值 etl過程過,往乙個資料庫表插入資料,插入的值往往需要到另外乙個資料庫讀取。例如下面的客戶跟蹤,需要乙個 專案id 這個id需要到另乙個資料庫的一張表查詢,找到後返回給 客戶跟蹤 任務流。執行sql任務 原專案id 的配置如下圖 sql語句是 if exist...
mysql表變數臨時表 表變數和臨時表詳解
首先讓我們來看看什麼是表變數和臨時表。sql server 表變數 1.初識表變數 表變數在sql server 2000中首次被引用。表變數的定義和建立乙個表大致相同,只不過是使用declare variable而不是create table,表變數定義包括列定義,列名,資料型別和約束 可用的約束...
臨時表與表變數
臨時表 表變數的比較 1 臨時表 臨時表包括 以 開頭的區域性臨時表,以 開頭的全域性臨時表。a 儲存 不管是區域性臨時表,還是全域性臨時表,都會放存放在tempdb資料庫中。b 作用域 區域性臨時表 對當前連線有效,只在建立它的儲存過度 批處理 動態語句中有效,類似於c語言中區域性變數的作用域。全...