• 全部
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流
  • 问答

一个关于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');

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




...全文
8 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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);
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2003-08-15 01:24
社区公告
暂无公告