2015-11-26 95 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選項設置中存在的腳本中的腳本變量。在以下腳本中(文件名是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