Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Конвертация переменной в строку  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Здравствуйте.


У меня есть файл (base.sql) следующего вида:

:out result.sql

:setvar sourceTable "SrcData"
:setvar targetTable "TrgData"


SET NOCOUNT ON


:r Merge.sql



Этот файл запускается *.bat файлом:

sqlcmd -S 192.168.255.10 -U Usr -P 123 -i base.sql -h -1 -y 8000


В файле Merge.sql мне нужно получить значение переменной sourceTable в виде строки. Т.е. выполнить что то вроде такого:

DECLARE @sourceTable nvarchar(100) = $(sourceTable);



В переменную @sourceTable должно записаться значение 'SrcData'.

Параметр $(sourceTable) нормально подставляется в запросы вида
selectfrom $(sourceTable)
. Но получить из него строку никак не удаётся.
Возможно ли это сделать и если да то как ?
14 мар 19, 17:18    [21832865]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36016
https://www.sql.ru/faq/faq_topic.aspx?fid=104
14 мар 19, 17:28    [21832875]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
invm
Member

Откуда: Москва
Сообщений: 8441
S_A_V_e,

DECLARE @sourceTable nvarchar(100) = '$(sourceTable)';
14 мар 19, 18:56    [21832950]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6271
S_A_V_e,

Это простая макроподстановка. Переменная заменяется на набор символов, указанных для значения переменной.
14 мар 19, 23:42    [21833123]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Владислав Колосов

Это простая макроподстановка. Переменная заменяется на набор символов, указанных для значения переменной.


Да, но преобразовать эти символы в строку не удаётся

Эти варианты не работают:
DECLARE @sourceTable nvarchar(100) = '$(sourceTable)'; -- подставляется как строка '$(sourceTable)'
DECLARE @sourceTable nvarchar(100) = ''''$(sourceTable)''''; -- Incorrect syntax near '$'
15 мар 19, 08:51    [21833273]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1507
S_A_V_e,

А если разделить на две строки?
DECLARE @sourceTable nvarchar(100)
SET @sourceTable = '$(sourceTable)'
15 мар 19, 09:04    [21833281]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Извиняюсь, ввёл в заблуждение... Ошибся в названии параметра и поэтому он не подставлялся.


Вот этот вариант правильный и работает:

DECLARE @sourceTable nvarchar(100) = '$(sourceTable)';


Спасибо за участие и советы.
15 мар 19, 09:34    [21833303]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
S_A_V_e
Эти варианты не работают:
DECLARE @sourceTable nvarchar(100) = '$(sourceTable)'; -- подставляется как строка '$(sourceTable)'
Странно, а у меня это работает
ИМХО вы где то запустались с переменными, областью действия и т.д.
Вы же тестируете на простом скрипте?
Просто скопируйте и запустите:
:setvar sourceTable "SrcData"

DECLARE @sourceTable nvarchar(100) = '$(sourceTable)';
select @sourceTable as sourceTable
15 мар 19, 09:42    [21833309]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация переменной в строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27934
S_A_V_e
Ошибся в названии параметра и поэтому он не подставлялся.
О, пока писал, вы уже нашли :-)
15 мар 19, 09:43    [21833310]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить