0
我在寫一個測試某個軟件函數的查詢。該查詢顯示如果沒有任何返回,測試通過。這是查詢:有條件地插入列
INSERT INTO ResultsTable VALUES(N'$(Var1)', N'$(Var2)', $(SELECT *
FROM Table1
WHERE Table1.Column1 = ''), GetDate(), $(Var3));
我怎樣才能得到的PASS
的「SELECT * FROM Table1 WHERE Table1.Column1 = '')
」輸入一個值,如果如果返回的所有東西沒有價值迴歸或FAIL
?
編輯:要增加一些清晰度,此查詢正在通過批處理文件執行。 Var1,Var2和Var3都是在批處理腳本中聲明的變量,並被拖入該查詢中。
我在批處理腳本中看起來像這樣的一行。
sqlcmd -S SERVER -D DATABASE -v Var1 = "!Variable1!" Var2 = "%Variable2%"
Var3 = "!Variable3!" -i "\\path\to\the\query.sql"
,其中頂部的查詢地處文件「query.sql的」
2日編輯:它大概重要補充,有在query.sql的文件,它是多個查詢正在我的批處理腳本中執行。
我覺得它不會是因爲寫了一堆用分號隔開;
查詢一樣簡單(我從答案的語法是不正確的認識,它只是證明一個點)
INSERT INTO ResultsTable VALUES(N'$(Var1)', N'$(Var2)', $(SELECT *
FROM Table1
WHERE Table1.Column1 = ''), GetDate(), $(Var3));
INSERT INTO ResultsTable VALUES(N'$(Var1)', N'$(Var2)',
$(SELECT q1.Column1, q1.Column2, q1.Column3, q2.Column4, q1.Column5-
q2.Column6 AS placeholdername1
FROM (SELECT Table3.Column1, Table3.Column2, count(*) AS placeholdername2
FROM Table3
GROUP BY Table3.Column1, Table3.Column2) AS q1 INNER JOIN
(SELECT Table4.Column1, Table4.Column2,
count(*) AS placeholdername3
FROM Table4 INNER JOIN
Table5 ON Table4.Columnname=
Table5.id
GROUP BY
Table5.Columm1, Table5.Column2) AS
q2 ON q1.Column1= q2.Column1 AND q1.Column2= q2.Column2
WHERE q1.Column2 - q2.Column2> 1), GetDate(), $(Var3));
請忽略所有的佔位符值,例如column1,table3等,因爲它們都是佔位符,我也懶得確保它們一致。
每個查詢的,應傾倒成果轉化有像這樣有組織列結果表:
| Var1 | Var2 | Result | DateRun | Var3 |
| | | | | |
如果我從批處理文件執行查詢,這種格式會工作嗎? Var1,Var2是在批處理文件中聲明的變量。更具體地說,select語句從Table1中提取值,但其他變量是從其他位置聲明的。 – David 2015-02-09 19:15:17
如果將它們正確地聲明爲SQL服務器變量,它將起作用。我不明白你在批處理文件中運行SQL的含義。也許你可以更詳細地描述你想要做的事情。 – HLGEM 2015-02-09 19:24:04
我正在使用'sqlcmd'函數進行批處理腳本執行批處理腳本中的查詢。我做了一個編輯,試圖澄清。 – David 2015-02-10 14:29:01