一个关于SQL的奇怪问题

hnzsy 2003-08-15 01:24:30
本人一个ORALCE存储过程中有这样一条语句:
。。。。。
a number(10);

SERV_ID:= 424858;
ACCT_ITEM_TYPE_ID := 'A21';

select count(*)
into a
ORDER_SERIAL_NBR
from serv_acct
where (eff_date = (select max(eff_date) from serv_acct where serv_id = SERV_ID and acct_item_type_id = ACCT_ITEM_TYPE_ID)) and
(serv_id = SERV_ID and acct_item_type_id = ACCT_ITEM_TYPE_ID);

执行后 a = 2

但是我把此语句放在SQLPLUS中执行时返回却为 1
SQLPLUS脚本:
select count(*)
from serv_acct
where (eff_date = (select max(eff_date) from serv_acct where serv_id = 424858 and acct_item_type_id = 'A21')) and
(serv_id = 424858 and acct_item_type_id = 'A21');

调试很久没有结果,请大侠执教




...全文
32 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-08-15
  • 打赏
  • 举报
回复
serv_id = SERV_ID and acct_item_type_id = ACCT_ITEM_TYPE_ID --这样等式相当于完全成立,即全部记录也取出来了。
修改如下:

v_SERV_ID:= 424858;
v_ACCT_ITEM_TYPE_ID := 'A21';

select count(*)
into a
ORDER_SERIAL_NBR
from serv_acct
where (eff_date = (select max(eff_date) from serv_acct where serv_id = v_SERV_ID and acct_item_type_id = v_ACCT_ITEM_TYPE_ID)) and
(serv_id = v_SERV_ID and acct_item_type_id = v_ACCT_ITEM_TYPE_ID);

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧