Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSIS - execute SQL task. Как получить данные из временной таблицы? / 9 сообщений из 9, страница 1 из 1
02.10.2017, 16:33
    #39529526
User2155
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
Добрый день,
мне нужно "на лету" создать большую команду SQL для чужого сервера (не SQL).
Для этого я использую Execute SQL Task чтобы эту команду склеить из кусочков. Порядок работы:

1) Заполняю SQLStatement.
Что-то вроде этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
-- Переменная для работы
declare @my_command nvarchar(max);

-- Формируем команду SQL (тут может быть довольно много кода)
set @my_command = 'select from tbl_main where (......)';
set @my_command = replace(@my_command, 'old_val', 'new_val');
set @my_command = '.....';

-- Вот этот кодик выводит финальную команду SQL и я хочу прочитать её в SSIS пакете
select @my_command as col1;



3) На вкладке General пишу что resultset должен быть SingleRow.

2) На вкладке ResultSet показываю что переменная должна прочитать значение колонки col1.

Нифига не работает. SSIS пакет не хочет читать значение колонки col1.
Я уже с этим сталкивался - это из-за выборки "на лету". Т.е. вот этого: select @my_command as col1;
Если бы там стояла реальная таблица, то все было бы хорошо. Как победить??

Спасибо.
...
Рейтинг: 0 / 0
02.10.2017, 17:39
    #39529586
User2155
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
Выкрутился.

1) Создал Data Flow Task.
2) Дальше "Ole DB Source" и там сформировал команду SQL.
3) Добавил "Script component" в режиме "Destination" и присвоил значения переменным.
...
Рейтинг: 0 / 0
02.10.2017, 18:12
    #39529610
Alex_496
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
склеивать из кусочков динамический sql, к тому же большой - моветон, ИМХО
...
Рейтинг: 0 / 0
03.10.2017, 00:47
    #39529750
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
User2155Я уже с этим сталкивался - это из-за выборки "на лету". Т.е. вот этого: select @my_command as col1;отнюдь... это нормально работает.
другой вопрос где у вас здесь "временная таблица"?
и надеюсь вы понимаете, что nvarchar(max) это вовсе не string?
...
Рейтинг: 0 / 0
03.10.2017, 10:18
    #39529894
Ferdipux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
User2155Добрый день,
мне нужно "на лету" создать большую команду SQL для чужого сервера (не SQL).
Для этого я использую Execute SQL Task чтобы эту команду склеить из кусочков.
...

А зачем так, довольно странный способ. Есть гораздо лучше и проще - называется variable expressions. Вы можете для переменной определить выражение для вычисления, и оно будет вычислено при обращении к переменной.
...
Рейтинг: 0 / 0
03.10.2017, 10:20
    #39529899
Ferdipux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
User2155,

К вашему исходному вопросу - если вы используете OLEDB connection manager, то выходные параметры задаются как номера столбцов. То есть в вашем случае - задавайте номер колонки 0 и читайте его.
По именам читать умеют только ADO.NET connection manager, но там свои проблемы.
...
Рейтинг: 0 / 0
03.10.2017, 11:25
    #39530000
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
Ferdipuxесли вы используете OLEDB connection manager,
то выходные параметры задаются как номера столбцов.
То есть в вашем случае - задавайте номер колонки 0 и читайте его.и чем вам имена полей не угодили?
...
Рейтинг: 0 / 0
03.10.2017, 12:34
    #39530083
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
Ferdipux,

про expression для variable - это здорово сам пользуюсь, но если или преобразования сложные или составных частей много, то их всех надо предварительно загнать в свои переменные, а если кроме этого они больше не нужны какой смысл? тем более что код выражения получается абсолютно не читаемый в этом случае и для его редактирования приходится пользоваться внешними редакторами.. а уж что-то поправить быстро вообще не удобно.
поэтому иногда Execute SQL Task или Script Task предпочтительнее.
...
Рейтинг: 0 / 0
03.10.2017, 19:48
    #39530473
Ferdipux
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSIS - execute SQL task. Как получить данные из временной таблицы?
Дедушка,

Да, вы правы, должно читать. Видимо, фантомы после SSIS 2005/2008, там были гм, специфики...
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSIS - execute SQL task. Как получить данные из временной таблицы? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]