oracle执行存储过程返回游标cursor

来源:互联网 发布:微商比淘宝便宜 编辑:程序博客网 时间:2024/05/20 02:29
create or replace procedure TEST(s varchar2, r_result out sys_refcursor) is
  --作者:lml
  --功能:根据tokenid查询放行指令
  --详情:
  --1.返回放行指令
  --时间:20170921
begin


  DECLARE
    v_user_id nvarchar2(40); --用户ID
    v_sql2    nvarchar2(500); --sql语句
  BEGIN
  
    DECLARE
      v_where varchar2(1000);
      v_sql   varchar2(1000);
    BEGIN
    
      v_where := ' and create_date> sysdate-5';
      v_sql   := 'select * from it_rel_command where rownum<20';
      v_sql   := v_sql || v_where;
    
      dbms_output.put_line('v_sql : ' || v_sql);
    
      OPEN r_result FOR v_sql;
    
    END;
  
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line('sqlcode : ' || sqlcode);
      dbms_output.put_line('sqlerrm : ' || sqlerrm);
      ROLLBACK;
  END;
end TEST;