2012-01-25 6 views
0

Я поставил задачу выполнения sql внутри контейнера цикла foreach, где я хочу выполнить получение имени хранимой процедуры из определяемой пользователем переменной sys Но я не нахожу правильный синтаксис для выполнения сохраненных имя процедуры из переменной. и я хочу передать входной параметр для выполнения хранимой процедуры, которая также является другой д.т.н. переменной Пожалуйста, может ли один помочь выяснить правильный синтаксисошибка в ssis выполнить задачу sql

enter image description here

ответ

4

Допустим, у вас есть две переменные StoredProcedureName и ParameterValue

Создайте новую переменную под названием QueryString. Откройте окно свойств, нажав F4, а затем щелкните имя переменной в окне с перечнем переменных. Задайте свойство EvaluateAsExpression вашего QueryString переменной True.

Затем нажмите эллипс в Expression, чтобы открыть Expression Builder. Введите следующее выражение

"Execute " + @[User::StoredProcedureName] + " @ParameterName = '" + @[User::ParameterValue]+ "'" 

Нажмите на Вычислить выражение и вы должны увидеть

Execute MyProcedure @ParameterName = 'SomeValue'

Назначают эту переменную в вашем SourceVariable для Execute SQL Task.

+0

Спасибо за быстрый ответ, мне нужно еще одну помощи, вот если мой второй переменным @ [User :: ParameterValue] является целым числом, как я построить выражение, его ошибка произнесения типа метания – mahesh

1

может выстроить свою строку, как указано выше, но я бы не начал с нее. Во-первых, он предполагает, что все является строкой, а во-вторых, возможно, что вы открываете до SQL-инъекции (очень маловероятно, я согласен)

Чтобы на самом деле использовать собственное сопоставление параметров для ADO.NET, вам нужно использовать @PlaceHolder для вашего переменная подстановка. Основываясь на скриншоте, значение @ [User :: StoredProcedureName] необходимо будет иметь формат EXECUTE schema.ProcName @ParameterName В противном случае, вы смотрите на брусчатки выражение из @Raj Мора, например без =... части

enter image description here

Сопоставление так же просто, как и следующее. Убедитесь, что вы выбрали правильные типы данных и имена параметров для корреляции с вашим запросом.

enter image description here