create or replace procedure getemps( p_cursor in out types.cursorType ) 
as begin open p_cursor for select * from PROVINCE_MASTER; 
end; 这个存储过程怎么执行?Oracle存储过程中执行查询,如何返回数据集,这样的存储过程该怎么写呢,请高手指教

解决方案 »

  1.   

    如果是在plsql里执行的话直接用procedure的名字带上参数就可以调用了比如
    declare
    v_cursor types.cursorType;
    begin
    getemps(v_cursor);
    end;这里sp里定义的是out,所以返回值就是这个参数对应的变量。
      

  2.   

    Oracle存储过程中执行查询,如何返回数据集,这样的存储过程该怎么写呢,请高手指教
    对于Oracle我属于初学者,跟SQL Server的语法完全不同,麻烦各位给我个示例,让我理解一下。
      

  3.   


    SQL> show user;
    USER 为 "SCOTT"-----创建存储过程SQL> CREATE OR REPLACE PROCEDURE EMP_COUNT(P_TOTAL OUT NUMBER)  
      2          AS  
      3          BEGIN  
      4          SELECT COUNT(*) INTO P_TOTAL FROM EMP;   
      5          END;  
      6  /过程已创建。-----执行存储过程
    SQL> set serveroutput on;
    SQL> DECLARE  
      2          V_EMPCOUNT NUMBER;   
      3          BEGIN  
      4          EMP_COUNT(V_EMPCOUNT);   
      5          DBMS_OUTPUT.PUT_LINE('雇员总人数为:'||V_EMPCOUNT); 
      6          END;  
      7  /
    雇员总人数为:14PL/SQL 过程已成功完成。