Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Prosedur tersimpan Oracle:mengembalikan set hasil dan parameter keluar

Di Oracle, Anda tidak dapat menjalankan pernyataan pemilihan langsung tanpa INTO ayat.

Jika Anda menggunakan Oracle 12c dan yang lebih baru, Anda dapat menggunakan REF CURSOR dan DBMS_SQL.RETURN_RESULT

create or replace procedure foo(empId IN NUMBER, maxSalary OUT NUMBER) AS
q SYS_REFCURSOR;
 BEGIN
    OPEN q FOR select * from Employee e where e.id >=empId;
     DBMS_SQL.return_result (q); -- This will display the result
    select max(salary) into maxSalary from Employee;
END;

Untuk versi sebelumnya ( 11g,10g) , Anda dapat memberikan REF CURSOR sebagai OUT parameter dan mencetaknya dari sqlplus atau TOAD dengan menjalankan sebagai skrip.

create or replace procedure foo(empId IN NUMBER, maxSalary OUT NUMBER,
   q OUT SYS_REFCURSOR) AS

     BEGIN
        OPEN q FOR select * from Employee e where e.id >=empId;
        select max(salary) into maxSalary from Employee;
    END;

Tentukan variabel bind sebelum memanggil prosedur.

VARIABLE v_empID NUMBER
VARIABLE v_maxsalary NUMBER
VARIABLE v_q REFCURSOR

EXEC :v_empID := 101
EXEC foo(:v_empID,:v_maxsalary,:v_q ) 
PRINT v_q -- This will display the result from the query.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara LockModeType Jpa

  2. Cara Melanjutkan Pemrosesan Kursor Loop Setelah Pengecualian Di Oracle

  3. Bagaimana cara menambahkan 10 detik di SQL current_timestamp ( Oracle )

  4. Pengantar Pernyataan FORALL Dalam Database Oracle

  5. Bagaimana cara menggunakan enum di Oracle?