本人刚学oracle的存储过程,下面有些地方不太明白,求助各位!
create or replace PROCEDURE proces
(
     i_uid VARCHAR2,--当前操作人ID
     is_null varchar2
    -- Io_Cursor IN OUT pkg_public.cur_ref
)IS
     t_MyEmployeeId    VARCHAR2(20);
     t_sql varchar(200):='';
begin 
      t_MyEmployeeId:= i_uid;
                     
      t_sql:='select * from pro_projects a where 1=1';
      
        IF is_null IS NOT NULL THEN
           t_sql := t_sql || ' and a.projects_id ='''||t_MyEmployeeId||'''';
        END IF;
end;  我的操作是判断参数is_null如果等于空,就把后面的查询接上去,现在的问题是,我测试-F8执行的时候不出任何结果,我想让他查询出一张表的形式显示出来该怎么加输出流?求助各位!!

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE PROCES(I_UID   VARCHAR2, --当前操作人ID 
                                       IS_NULL VARCHAR2,
                                       MY_CUR  OUT SYS_REFCURSOR) IS
      T_MYEMPLOYEEID VARCHAR2(20);
      T_SQL          VARCHAR(200) := '';
    BEGIN
      T_MYEMPLOYEEID := I_UID;  T_SQL := 'select * from pro_projects a where 1=1';  IF IS_NULL IS NOT NULL THEN
        T_SQL := T_SQL || ' and a.projects_id =''' || T_MYEMPLOYEEID || '''';
        
        OPEN my_cur FOR 
        t_sql;
      END IF;
    END;
      

  2.   


    MY_CUR  OUT SYS_REFCURSOR 这里的“SYS_REFCURSOR ” 代表什么意思?
      

  3.   

     我想问下,这个SYS_REFCURSOR 游标是自己定义呢。还是系统定义的。什么情况下用?为什么现在用的就是“SYS_REFCURSOR”这种游标
      

  4.   

    EXECUTE proces ('uid','true');
    如果IS_NULL字段为空,那你还真的需要游标了