我正在使用Oracle,但我对这是否可以在任何sql风格中感兴趣。基本上我有一个很长的选择声明;我需要确认select返回一定数量的记录(单独选择计数(*)的输出)并且我还没有能够找到如何以编程方式执行此操作(或解决阻止我的问题从一开始就知道我的查询是100%正确的。
理想情况下,我想添加几行,以便返回正确的集合,或者抛出错误
答案 0 :(得分:1)
所以这是在MS-SQL上完成的,但我确信如果你有意思的话,你可以轻松地让它适用于Oracle:
DECLARE @err_message nvarchar(255)
set @err_message = 'Doesnt match count expected'
IF
(select count(*) [Counter] from(
select ordernum from erp.orderhed where ordernum > 390000) as Ordercount) <> 3412
raiserror(@err_message,11,1)
ELSE
select ordernum from erp.orderhed where ordernum > 390000
在这个例子中,我知道(因为我检查过)从该查询返回的确有3412行,因此它将进入ELSE并返回我的查询(可以将其存储为视图可读性)。如果该计数发生变化,那么它将使用我写的消息引发异常。
我不确定您的意思是如何使用它,但我想这会很好地适应存储过程。