我有一些查询,我用来测试我运行的测试的数据库结果是否没有明显破坏和错误。
其中一个查询具有以下基本形式:
SELECT *
FROM Table
WHERE Column = ''
检查以确保一个特定字段不为空。我想跟踪正在运行的这些测试以及它们通过或失败的时间。有没有办法可以编写查询,这样如果该查询带回任何结果,那么它会将字符串写入另一个表格,如“Test Passed”?
因此,伪版本可能看起来像这样:
IF (
SELECT *
FROM Table1
WHERE Table1.Column1 = ''
) = 0
INSERT INTO Table2 (FileName, Date, Result)
VALUES ('File1', 'GetDate()', 'Test Passed')
ELSE
INSERT INTO Table2 (FileName, Date, Result)
VALUES ('File1', 'GetDate()', 'Test Failed')
表格可能如下所示:
| FileName | Date | Result |
|:--------:|:--------:|:-----------:|
| File1 | 12-25-16 | Test Passed |
| File2 | 12-25-16 | Test Failed |
| File3 | 12-25-16 | Test Passed |
| File4 | 12-25-16 | Test Passed |
答案 0 :(得分:4)
你的代码中几乎有它。只需将SELECT *
更改为SELECT COUNT(*)
,您就可以了。我会设置状态,然后插入。
DECLARE @testStatus NVARCHAR(MAX);
IF (
SELECT COUNT(*)
FROM Table1
WHERE Table1.Column1 = ''
) = 0
SET @testStatus = 'Test Passed'
ELSE
SET @testStatus = 'Test Failed'
INSERT INTO Table2 (FileName, Date, Result)
VALUES ('File1', GetDate(), @testStatus)
答案 1 :(得分:0)
有没有办法可以编写一个查询,这样如果该查询带回任何结果,那么它会将一个字符串写入另一个表格,例如" Test Passed"?
进一步构建您的查询,您可以执行以下操作
- 没有列,所以测试通过了
IF not exists ( SELECT *
FROM Table1
WHERE Table1.Column1 = ''
)
Begin
INSERT INTO Table2 (FileName, Date, Result)
VALUES ('File1', 'GetDate()', 'Test Passed')
End
答案 2 :(得分:0)
如果只想使用查询(没有T-SQL)来实现结果,可以使用此解决方案:
INSERT INTO Table2(FileName, Date, Result)
SELECT 'File1', GetDate(), X.Result FROM (
SELECT 'Test passed' Result
WHERE EXISTS(SELECT * FROM Table1 WHERE Column1 = '')
UNION ALL
SELECT 'Test failed'
WHERE NOT EXISTS (SELECT * FROM Table1 WHERE Column1 = '')
) X
只需稍加努力,您就可以编写相同查询的Oracle版本:
INSERT INTO Table2(FileName, Date, Result)
SELECT 'File1', sysdate, X.Result FROM (
SELECT 'Test passed' Result FROM dual
WHERE EXISTS(SELECT * FROM Table1 WHERE Column1 = '')
UNION ALL
SELECT 'Test failed' FROM dual
WHERE NOT EXISTS (SELECT * FROM Table1 WHERE Column1 = '')
) X
答案 3 :(得分:0)
MERGE
table2 AS target
USING
table1 AS source
ON
source.Column1 = ''
WHEN MATCHED THEN
INSERT INTO target (FileName, Date, Result)
VALUES ('File1', 'GetDate()', 'Test Failed')
WHEN NOT MATCHED THEN
INSERT INTO target (FileName, Date, Result)
VALUES ('File1', 'GetDate()', 'Test Passed')