想编个过程,如下create or replace procedure PRC_TEMP AS
begin
  SELECT * FROM KZS001.TEMP ;
end PRC_TEMP;但是编译出错,实在不懂。
环境是7.3 在PL/SQL Developer 下面

解决方案 »

  1.   

    存储过程里select语句要有返回值才行
      

  2.   

    返回数据集要用游标~~~  刚从SQL SERVER转过来真不习惯这样啊,ORACLE为什么要有这么变态的规定呢?直接返回数据集不省事多了吗?
      

  3.   

    从别的地方拷来的一段/* 存储过程返回数据集 *//* 1.建立带ref cursor定义的包和包体及过程 */
    create or replace package pkg_test
    as
    type myrctype is ref cursor;
    procedure display(p_empno char,p_rc out myrctype);
    end;create or replace package body pkg_test
    as
      procedure display(p_empno char,p_rc out myrctype)
      is
      sqlst varchar2(100);
      begin     
        if p_empno is null then
           open p_rc for select emp_name from student;
        else
           sqlst := 'select emp_name from student where emp_no = :w_empno';
           open p_rc for sqlst using p_empno;
        end if;
        end;
    end;调用:
    declare 
      w_rc pkg_test.myrctype;
      w_empname student.emp_name%type;
    begin 
      pkg_test.display('0001', w_rc);  loop
          fetch w_rc into w_empname;
          exit when w_rc%notfound;
          dbms_output.put_line(w_empname);
      end loop;
    end;
      

  4.   

    如果我只是想把表里的某个字段改一下,也不需要返回什么结果该如何用?
    比如说创建一个过程
    create or replace procedure PRC_TEMP AS
    begin
      UPDATE TEMP SET  AAA="111" ;
    end PRC_TEMP;此时能编译成功,但是用 EXEC PRC_TEMP 来执行时就出错。说是无效的SQL,为什么?