1
以下内容陈述给出了一个错误情况下的子查询2008
打印(情况 当从tblCustomerProductsDiscount PD其中PD.cust_ID = 138和PD.pack_detl_ID = 1),则存在0(SELECT COUNT(*)结束)
错误: 在此上下文中不允许使用子查询。只有标量表达式是允许的。
以下内容陈述给出了一个错误情况下的子查询2008
打印(情况 当从tblCustomerProductsDiscount PD其中PD.cust_ID = 138和PD.pack_detl_ID = 1),则存在0(SELECT COUNT(*)结束)
错误: 在此上下文中不允许使用子查询。只有标量表达式是允许的。
首先,虽然你的意图很清楚,但目前形式的脚本没有意义,这是为什么。
要检查在select count(*)...
子查询行的存在,但事实是,COUNT()
总是返回一个值。在没有指定条件的行的情况下,它将返回0
,但这仍然是子查询返回的行,并且在任何情况下EXISTS
都将评估为TRUE
。
要修复它,只需用select *
替换select count(*)
即可。
另一件事是错误。 子查询不允许在这种情况下,那就是final。用PRINT
你不能以任何形式使用子查询。将结果存储在变量中并且PRINT
变量:
declare @result int;
set @result = case
when exists (
select *
from tblCustomerProductsDiscount PD
where PD.cust_ID=138 and PD.pack_detl_ID = 1
)
then 0
end
print @result;
不要使用exists(count)。效率很低。 – 2011-03-04 07:04:04
只需在打印后添加** SELECT **即可。应该做的伎俩,并消除你的错误。 **打印(选择存在时的案例(从tblCustomerProductsDiscount PD中选择count(*),其中PD.cust_ID = 138且PD.pack_detl_ID = 1)然后0结束)** – 2011-03-04 07:01:23
它给出了相同的错误。 – Rauf 2011-03-04 08:42:53