【发布时间】:2015-02-09 19:04:18
【问题描述】:
我正在编写一个测试某个软件功能的查询。如果没有返回任何内容,则查询显示测试通过。这是查询:
INSERT INTO ResultsTable VALUES(N'$(Var1)', N'$(Var2)', $(SELECT *
FROM Table1
WHERE Table1.Column1 = ''), GetDate(), $(Var3));
如果没有返回值,我如何让“SELECT * FROM Table1 WHERE Table1.Column1 = '')”输入值 PASS 或如果返回任何值,则输入 FAIL?
编辑:为了更加清楚,这个查询是通过一个批处理文件执行的。 Var1、Var2 和 Var3 都是在批处理脚本中声明并拉入此查询的变量。
我在批处理脚本中有一行看起来像这样。
sqlcmd -S SERVER -D DATABASE -v Var1 = "!Variable1!" Var2 = "%Variable2%"
Var3 = "!Variable3!" -i "\\path\to\the\query.sql"
顶部的查询在“query.sql”文件中的位置
第二次编辑:添加在我的批处理脚本中正在执行的 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 |
| | | | | |
【问题讨论】:
标签: sql sql-server-2008 batch-file sql-insert