SQLCMD传入变量

问题描述:

我有一个批处理文件,它运行多个*.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'; 

您还可以使用-v选项设置中存在的脚本中的脚本变量。在以下脚本中(文件名是testscript.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 DBNAME =%2的tablename =%3 我们将调用这个批处理文件是这样的: CallSqlScript.cmd参数1参数参数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 = “XX/XX/XX” SET TW_TO = “XX/XX/XX” 然后在TW_FROM和TW_TO传递到SQLCMD线 – Kajan