Я поставил задачу выполнения sql внутри контейнера цикла foreach, где я хочу выполнить получение имени хранимой процедуры из определяемой пользователем переменной sys Но я не нахожу правильный синтаксис для выполнения сохраненных имя процедуры из переменной. и я хочу передать входной параметр для выполнения хранимой процедуры, которая также является другой д.т.н. переменной Пожалуйста, может ли один помочь выяснить правильный синтаксисошибка в ssis выполнить задачу sql
ответ
Допустим, у вас есть две переменные StoredProcedureName
и ParameterValue
Создайте новую переменную под названием QueryString
. Откройте окно свойств, нажав F4, а затем щелкните имя переменной в окне с перечнем переменных. Задайте свойство EvaluateAsExpression
вашего QueryString
переменной True.
Затем нажмите эллипс в Expression
, чтобы открыть Expression Builder. Введите следующее выражение
"Execute " + @[User::StoredProcedureName] + " @ParameterName = '" + @[User::ParameterValue]+ "'"
Нажмите на Вычислить выражение и вы должны увидеть
Execute MyProcedure @ParameterName = 'SomeValue'
Назначают эту переменную в вашем SourceVariable
для Execute SQL Task.
может выстроить свою строку, как указано выше, но я бы не начал с нее. Во-первых, он предполагает, что все является строкой, а во-вторых, возможно, что вы открываете до SQL-инъекции (очень маловероятно, я согласен)
Чтобы на самом деле использовать собственное сопоставление параметров для ADO.NET, вам нужно использовать @PlaceHolder для вашего переменная подстановка. Основываясь на скриншоте, значение @ [User :: StoredProcedureName] необходимо будет иметь формат EXECUTE schema.ProcName @ParameterName
В противном случае, вы смотрите на брусчатки выражение из @Raj Мора, например без =...
части
Сопоставление так же просто, как и следующее. Убедитесь, что вы выбрали правильные типы данных и имена параметров для корреляции с вашим запросом.
Спасибо за быстрый ответ, мне нужно еще одну помощи, вот если мой второй переменным @ [User :: ParameterValue] является целым числом, как я построить выражение, его ошибка произнесения типа метания – mahesh