create or replace procedure testproc005 as
l_count number;
l_sql varchar2(1024);
begin
l_sql:='select count(*) from aaatbl';
dbms_output.put_line('l_sql='||l_sql);
execute immediate l_sql into l_count; --这句执行不成功
dbms_output.put_line(l_count);
end;

解决方案 »

  1.   

    这里完全可以不用动态SQL
    create or replace procedure testproc005 as
    l_count number;
    l_sql varchar2(1024);
    begin
    select count(*) into l_count from aaatbl;
    dbms_output.put_line(l_count);
    end;
    /
      

  2.   

    ATGC(想到南极去看看飞翔的海鸥):谢谢你的回复,不过我的SQL语句都是拼凑出来的,所以不能直接调用select count(*) into l_count from aaatbl,这里只是举了个简单的例子而已,有什么别的好办法获得总数吗?
      

  3.   

    对不起ATGC(想到南极去看看飞翔的海鸥):
    我刚开又仔细看了原始信息,原始信息应该类似下面的;
    create or replace procedure testproc005 as
    l_count number;
    l_sql varchar2(1024);
    begin
    l_sql:='select * from aaatbl';        --如何求出这个结果集的条数?
    dbms_output.put_line('l_sql='||l_sql);
    execute immediate l_sql into l_count; 
    dbms_output.put_line(l_count);
    end;
      

  4.   

    谢谢ATGC(想到南极去看看飞翔的海鸥),终于可以了我另外加了一个类似的查询语句,后面拼凑的条件不变,但查询的前面变了。由l_sql:='select * from aaatbl where ...'变为l_sql:='select count(*) from aaatbl where ...';baojianjun(包子):这个很有必要,因为这个是用在分页操作的,客户端必须知道查询出来的结果总数。