Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
S_A_V_e Member Откуда: Сообщений: 187 |
Здравствуйте. У меня есть файл (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) нормально подставляется в запросы вида select … from $(sourceTable). Но получить из него строку никак не удаётся. Возможно ли это сделать и если да то как ? |
14 мар 19, 17:18 [21832865] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
https://www.sql.ru/faq/faq_topic.aspx?fid=104 |
14 мар 19, 17:28 [21832875] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
S_A_V_e,DECLARE @sourceTable nvarchar(100) = '$(sourceTable)'; |
14 мар 19, 18:56 [21832950] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
S_A_V_e, Это простая макроподстановка. Переменная заменяется на набор символов, указанных для значения переменной. |
14 мар 19, 23:42 [21833123] Ответить | Цитировать Сообщить модератору |
S_A_V_e Member Откуда: Сообщений: 187 |
Да, но преобразовать эти символы в строку не удаётся Эти варианты не работают: DECLARE @sourceTable nvarchar(100) = '$(sourceTable)'; -- подставляется как строка '$(sourceTable)' DECLARE @sourceTable nvarchar(100) = ''''$(sourceTable)''''; -- Incorrect syntax near '$' |
||
15 мар 19, 08:51 [21833273] Ответить | Цитировать Сообщить модератору |
4d_monster Member Откуда: Москва Сообщений: 1613 |
S_A_V_e, А если разделить на две строки? DECLARE @sourceTable nvarchar(100) SET @sourceTable = '$(sourceTable)' |
15 мар 19, 09:04 [21833281] Ответить | Цитировать Сообщить модератору |
S_A_V_e Member Откуда: Сообщений: 187 |
Извиняюсь, ввёл в заблуждение... Ошибся в названии параметра и поэтому он не подставлялся. Вот этот вариант правильный и работает: DECLARE @sourceTable nvarchar(100) = '$(sourceTable)'; Спасибо за участие и советы. |
15 мар 19, 09:34 [21833303] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
ИМХО вы где то запустались с переменными, областью действия и т.д. Вы же тестируете на простом скрипте? Просто скопируйте и запустите: :setvar sourceTable "SrcData" DECLARE @sourceTable nvarchar(100) = '$(sourceTable)'; select @sourceTable as sourceTable |
||
15 мар 19, 09:42 [21833309] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
15 мар 19, 09:43 [21833310] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |