PL / SQL计数(*)在SQL中的行为有所不同

时间:2013-07-16 08:02:08

标签: sql oracle plsql sqlplus

我有一张空桌子。

如果我执行

select count(*) from table;

它返回0;

但是在PL / SQL中,Sql * Plus

declare
   c number;
begin
   select count(*) into c from table;
   dbms_output.put_line(c);
end;

返回572。

发生了什么事?

------------------------------------------ SOLVED- ---------------------------------

所以我必须这样做

delete from table;

在Sql * Plus中,而不是在Toad中。

但是,我在两个都运行了提交..

3 个答案:

答案 0 :(得分:1)

提交或回滚交易。看来你一直在使用这张桌子。没有提交/回滚在不同的会话中,您将得到不同的结果。

答案 1 :(得分:0)

你确定SQL表中有行吗? SQL select的语法看起来正确。我想“table”将是你的表名:tblProducts? “表”是MS SQL中的保留键功能

答案 2 :(得分:-1)

尝试使用ie。:

DECLARE
   c NUMBER(10) := 0;

然后:

SELECT COUNT(1) INTO c FROM table;