Как передать переменную в качестве параметра в Execute SQL Task SSIS?

Привет, у меня есть пакет ssis, в котором я беру значения из плоского файла и вставляю его в таблицу.

Я взял одну задачу Execute SQL Task, создав одну соблазнительную

CREATE TABLE [tempdb].dbo.##temptable 
(
date datetime,
companyname nvarchar(50),
price decimal(10,0),
PortfolioId int,
stype nvarchar(50)
)

Insert into [tempdb].dbo.##temptable (date,companyname,price,PortfolioId,stype) 
SELECT   date,companyname,price,PortfolioId,stype
FROM        ProgressNAV
WHERE     (Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index'))
ORDER BY CompanyName

Теперь в следующем запросе мне нужно передать (Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index')) эти 3 параметра с использованием имени переменной Я создал переменные в пакете, чтобы я стал динамическим. пожалуйста, помогите

Ответ 1

В вашей Execute SQL Task убедитесь, что для SQLSourceType установлено значение Direct Input, тогда ваше SQL-выражение является именем хранимой процедуры, с вопросительными знаками для каждого параметра proc, например:

enter image description here

Выберите сопоставление параметров в левом столбце и добавьте каждый параметр из сохраненного proc и сопоставьте его с вашей переменной SSIS:

enter image description here

Теперь, когда эта задача выполняется, она передаст переменные SSIS в сохраненный proc.

Ответ 2

Менеджеры соединений EXCEL и OLED DB используют имена параметров 0 и 1.

Я использовал соединение oledb и потратил пару часов, пытаясь выяснить причину, по которой запрос не работал или принимал параметры. приведенное выше объяснение помогло Большое спасибо.

Ответ 3

Команды

SELECT, INSERT, UPDATE и DELETE часто включают предложения WHERE для указания фильтров, которые определяют условия, в которых каждая строка в исходных таблицах должна встречаться, чтобы претендовать на команду SQL. Параметры предоставляют значения фильтра в предложениях WHERE.

Вы можете использовать маркеры параметров для динамического предоставления значений параметров. Правила, для которых маркеры параметров и имена параметров могут использоваться в выражении SQL, зависят от типа диспетчера соединений, который использует Execute SQL.

В следующей таблице перечислены примеры команды SELECT по типу диспетчера соединений. Операторы INSERT, UPDATE и DELETE похожи. В примерах используется SELECT для возврата продуктов из таблицы Product в AdventureWorks2012, у которых ProductID больше или меньше значений, заданных двумя параметрами.

EXCEL, ODBC и OLEDB

SELECT* FROM Production.Product WHERE ProductId > ? AND ProductID < ?

ADO

SELECT * FROM Production.Product WHERE ProductId > ? AND ProductID < ?

ADO.NET

SELECT* FROM Production.Product WHERE ProductId > @parmMinProductID 
     AND ProductID < @parmMaxProductID

В примерах потребуются параметры, которые имеют следующие имена: Менеджеры соединений EXCEL и OLED DB используют имена параметров 0 и 1. Тип соединения ODBC использует 1 и 2. Тип соединения ADO может использовать любые два имени параметра, такие как Param1 и Param2, но параметры должны отображаться по их порядковой позиции в списке параметров. Тип соединения ADO.NET использует имена параметров @parmMinProductID и @parmMaxProductID.

Ответ 4

Немного поздно для вечеринки, но вот как я сделал это для вставки:

DECLARE @ManagerID AS Varchar (25) = 'NA'
DECLARE @ManagerEmail AS Varchar (50) = 'NA'
Declare @RecordCount AS int = 0

SET @ManagerID = ?
SET @ManagerEmail = ?
SET @RecordCount = ?

INSERT INTO...