Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi thủ tục được lưu trữ Oracle khi chọn

Bạn không gọi đúng quy trình.

Trong SQL * Plus , bạn có thể làm điều đó như:

SQL> CREATE OR REPLACE
  2  PROCEDURE get_emp_rs(
  3      p_deptno IN emp.DEPTNO%TYPE,
  4      p_recordset OUT SYS_REFCURSOR)
  5  AS
  6  BEGIN
  7    OPEN p_recordset FOR
  8    SELECT ENAME, JOB, MGR
  9       FROM emp
 10     WHERE DEPTNO = p_deptno
 11    ORDER BY ENAME;
 12  END;
 13  /

Procedure created.

SQL>
SQL> SHOW ERRORS
No errors.
SQL>
SQL> variable cur refcursor
SQL>
SQL> DECLARE
  2  cur SYS_REFCURSOR;
  3  BEGIN
  4     get_emp_rs(10, :cur);
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL>
SQL> print cur;

ENAME      JOB              MGR
---------- --------- ----------
CLARK      MANAGER         7839
KING       PRESIDENT
MILLER     CLERK           7782

SQL>

Hoặc,

Nó có thể được tham chiếu từ PL / SQL như:

SQL> DECLARE
  2    l_cursor SYS_REFCURSOR;
  3    l_ename   emp.ename%TYPE;
  4    l_job     emp.job%TYPE;
  5    l_mgr     emp.mgr%TYPE;
  6  BEGIN
  7    get_emp_rs (p_deptno => 10, p_recordset => l_cursor);
  8    LOOP
  9      FETCH l_cursor INTO l_ename, l_job, l_mgr;
 10      EXIT
 11    WHEN l_cursor%NOTFOUND;
 12      DBMS_OUTPUT.PUT_LINE(l_ename || ' | ' || l_job || ' | ' || l_mgr);
 13    END LOOP;
 14    CLOSE l_cursor;
 15  END;
 16  /
CLARK | MANAGER | 7839
KING | PRESIDENT |
MILLER | CLERK | 7782

PL/SQL procedure successfully completed.

SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết hợp 2 khối if và tạo một truy vấn

  2. WHERE_IN truy vấn với một khóa tổng hợp?

  3. Hàm tương đương cho DATEADD () trong Oracle

  4. Làm cách nào để chuyển một tham số vào tập lệnh t-sql?

  5. % ENV không hoạt động và tôi không thể sử dụng thư viện được chia sẻ