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

menampilkan hasil dari prosedur tersimpan oracle 10g

Apakah ada kesalahan yang Anda lihat saat Anda menjalankan prosedur ini atau menjalankannya di SQLPLUS? Dapatkah Anda memposting sesi sqlplus Anda apa adanya?

PRINT adalah perintah khusus sqlplus dan tidak dapat dipanggil di dalam blok prosedural. Jika Anda perlu mencetak hasil refkursor di dalam procedure , maka Anda harus mengambilnya dan mencetak setiap record dalam format yang Anda butuhkan.

SQL> create or replace procedure test_REFCURSOR (
  2     i_number in number,
  3     o_cursor out sys_refcursor) 
  4  as
  5  begin
  6     open o_cursor for
  7        'select empno, ename from emp
  8             where rownum < ' || i_number ;
  9  end;
 10  /

Procedure created.

SQL> variable rc refcursor;
SQL> exec test_refcursor(5, :rc);

PL/SQL procedure successfully completed.

SQL> print rc;

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES

Anda juga harus mengubah prosedur Anda (atau) panggilan prosedur untuk memiliki nama variabel yang berbeda.generallt, saya mengawali semua variabel input dengan "i_" dan semua variabel output dengan "o_". Dengan cara ini, deklarasi prosedur Anda akan terlihat seperti..

CREATE OR REPLACE PROCEDURE IFSINFO.SHORTAGE_SHEET (i_Site     IN VARCHAR2,
                                                    i_Buyer    IN VARCHAR2,
                                                    i_Supplier IN VARCHAR2,
                                                    o_Cursor   OUT SYS_REFCURSOR) AS ....

dan panggilan prosedurnya adalah..

IFSINFO.SHORTAGE_SHEET(    i_site     => vsite,
                           i_buyer    => vbuyer,
                           i_supplier => vsupplier,
                           o_cursor   => vcursor);

Anda tidak perlu menggunakan ":" di awal untuk variabel ini karena mereka bukan variabel lingkungan host ( ini adalah kasus untuk eksekusi kedua Anda menggunakan SQLPLUS di mana Anda menggunakan variabel sqlplus "rc" di dalam panggilan prosedur)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pilih saja dan hanya catatan tertentu di oracle

  2. Sepuluh Alasan Teratas untuk Bermigrasi dari Oracle ke PostgreSQL

  3. GROUP BY / kebingungan fungsi agregat dalam SQL

  4. Fungsi Tersimpan di Oracle tidak Memasukkan Nilai ke dalam tabel yang diinginkan

  5. Apakah COUNT(rowid) Lebih Cepat Dari COUNT(*)?