2015-11-26 2 views
2

У меня есть пакетный файл, который запускает несколько файлов *.sql. В настоящее время все переменные были жестко закодированы в файлах sql. Я хотел бы знать, как передать значения переменных из пакетного файла SQLCMD.SQLCMD Передача в переменных

Пример имен переменных:

DECLARE @TW_FROM DATETIME 
DECLARE @TW_TO DATETIME 
SET @TW_FROM = '2015-11-16 00:00:00'; 
SET @TW_TO = '2015-11-16 00:00:00'; 

ответ

1

Вы также можете использовать опцию -v, чтобы установить переменную скриптинга, которая существует в сценарии. В следующем сценарии (имя файла - testcript.sql), ColumnName - это скриптовая переменная.

USE AdventureWorks2012; 
SELECT x.$(ColumnName) 
FROM Person.Person x 
WHERE c.BusinessEntityID < 5; 

Вы можете указать имя столбца, который вы хотите, возвращенного с помощью опции -v:

sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql 

Для возврата в другой столбец, используя один и тот же сценарий, измените значение из Переменная столбца ColumnName.

sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql 

Больше документации: https://msdn.microsoft.com/en-us/library/ms188714.aspx

+0

Спасибо за ваш ответ. Я должен был объяснить, что я совершенно новичок в SQL. Не могли бы вы дать мне некоторые рекомендации по объявлению этих переменных как в SQL, так и в файле .bat? Заранее спасибо. – Kajan

+0

CallSqlScript.cmd SQLCMD -S% 1 -i select.sql -v имя_бд =% 2 имя_таблицы =% 3 Мы будем называть этот пакетный файл что-то вроде этого: CallSqlScript.cmd Parameter1 Parameter2 параметр3 Источник: HTTP : //blogs.msdn.com/b/ssehgal/archive/2009/04/03/passing-parameters-to-sql-script-using-batch-files.aspx –

+0

Мне удается получить эту работу! Да! Наконец, как установить глобальные переменные в * .bat-файле? , например. SET TW_FROM = «хх/хх/хх» SET TW_TO = «хх/хх/хх» Затем пройти в TW_FROM и TW_TO в Sqlcmd линии – Kajan

Смежные вопросы