写了及其简单的存储过程,无非是把个查询语句写进存储过程而已:
create or replace procedure tt
is c number;
begin
  select count(*) into c from YWZX_PWJ.XY_DJ200908;
end;编译通过了.
但是我调用的时候却犯了难,我用的是plsql dev
在该存储过程上点右键test,然后运行没有结果出来.
如果是在命令窗口输入:
execute tt;
得到的结果是 
PL/SQL procedure successfully completed
也无结果出来.假设我运行
  select count(*)  from YWZX_PWJ.XY_DJ200908
的结果是3
那么我该怎么运行我写的存储过程得到结果 3呢?

解决方案 »

  1.   

    create or replace procedure tt(c out number) 
    is
    begin
      select count(*) into c from YWZX_PWJ.XY_DJ200908;
    end;
    /set serveroutput on
    /
    declare c number;
    begin
       tt(c);
       dbms_output.put_line(c);
    end;
    /
    需要有传出参数才行
      

  2.   

    恩,根据楼上的改了一下,果然有用了,我右键test,点执行,就有结果出来了
    但是,你下面的这个我不懂哦:
    /set serveroutput on
    /
    declare c number;
    begin
       tt(c);
       dbms_output.put_line(c);
    end;
    /
    这个是在 sql window 里输入的么?
    一次性全部运行?
      

  3.   

    那么oracle 的存储过程里是不是每查询出的一个字段,都必须得放入一个变量里?
    如果我是要查询表里的所有字段
    那么我是不是就需要指定每一个字段都放入变量里?
      

  4.   

    不用的,结果集记录数超过1行这些变量就放不下了一般用游标cursor保存这些结果游标的简单使用可以看看这个:
    http://topic.csdn.net/u/20090914/20/6d71213a-b889-4107-9193-2f78582b4eb3.html