我在PLSQL中写一个存储过程
其中有句SQL语句
select count(1)
into rows1
from T_BASE_AREA_EXCEPTIONCONF t
where t.indexcode = INDEXCODE
and t.year = YEAR
and t.month = MONTH
and t.zjjgdm = ZJJGDM;
总是返回1,即使我的表格中没有对应条件的记录但在sql plus中执行,则没问题
我很困惑,不知道为什么
请高手帮帮忙
其中有句SQL语句
select count(1)
into rows1
from T_BASE_AREA_EXCEPTIONCONF t
where t.indexcode = INDEXCODE
and t.year = YEAR
and t.month = MONTH
and t.zjjgdm = ZJJGDM;
总是返回1,即使我的表格中没有对应条件的记录但在sql plus中执行,则没问题
我很困惑,不知道为什么
请高手帮帮忙
结果
0
SQL> begin
2 select count(1) into :v_count from user_tables where 1 <>1;
3 end;
4 / PL/SQL 过程已成功完成。 SQL> print :v_count; V_COUNT
----------
0
你commit一下,那就两边的查询结果一致了或者你把所有的连接都断一下再试
如果是分组的话,就有可能出现多行记录集,这是和不分组的count的区别,如果是多条记录集的话,这里select into 就会出错了。
例如:declare
myrowid rowid;
begin
select rowid
into myrowid
from T_BASE_AREA_EXCEPTIONCONF t
where t.indexcode = INDEXCODE
and t.year = YEAR
and t.month = MONTH
and t.zjjgdm = ZJJGDM;
dbms_output.put_line(myrowid);
end;
/
SQL> SELECT COUNT(1) FROM dual;
COUNT(1)
----------
1
SQL> SELECT COUNT(1) FROM dual where 1 <> 1
2 ;
COUNT(1)
----------
0
用你的方法试了下,发现不管我在哪个条件(INDEXCODE,YEAR,MONTH,ZJJGDM)输入任意值,都返回表格的所有行