2017-04-04 11 views
2

當寫我的SQL命令時,我指定?來表明我想使用傳入的參數。但是,對於我使用的每個?,該包認爲這是一個新參數,即使我想使用同一個參數。SSIS - 在OLE DB Source中只指定一個參數,並帶有多個'?'

enter image description here

= 6的新的參數雖然每個參數是相同的。如參數0和1所示

有沒有一種方法可以只指定一個參數?

感謝

+0

你可以聲明一個變量,傳遞一個參數並在Where子句中使用它。看看我的回答 – Hadi

回答

1

您可以通過在您的SQL命令中聲明一個變量並將其傳遞給參數,然後在WHERE子句中使用此變量來實現此目的。像下面

DECLARE @str AS INT 

SET @str = ? 

SELECT  Column1 
FROM   Table1 
WHERE  (Column2= @str or Column3 = @str) 

enter image description here

enter image description here

其他解決方法

1)

假設您想要創建下面的查詢

Select * From Table1 Where [Column1] = ? Or [Column2] = ? 
  1. 聲明一個變量(例如:User::strQuery
  2. Store中的參數變量(例如:User::Value
  3. 設置變量EvaluateAsExpression屬性爲True
  4. 設置表達式如下:

    "Select * From Table1 Where [Column1] = " + @[User::Value] + " OR [Column2] = " + @[User::Value] 
    
  5. OLEDB Source將源設置爲SQL Command from variable和選擇可變@[User::strQuery]

2)

可以創建取一個參數,並使用它存儲過程或一個表值函數作爲源

+0

我明白了,這很公平。我對我的問題感到羞愧。謝謝 – user3428422

1

你能聲明一個變量,你的SQL語句的腳本,通過α取的參數值內,然後使用變量之後呢?

1

在SQL Server上創建一個採用一個參數幷包含正確查詢的存儲過程。用一個參數調用存儲過程。