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

blok plsql untuk mendapatkan hasil kueri sql dinamis

Ini:

dbms_output.put_line(sql_str);

... adalah apa yang mencetak output, yang merupakan perilaku yang benar. Bagian DECLARE memberi saya kesan Anda mencoba menjalankan fungsi anonim, benar?

Saya tidak pernah menggunakan EXECUTE IMMEDIATELY - hanya berikut ini:

FUNCTION MY_FUNCTION()
RETURN SYS_REFCURSOR

L_CURSOR SYS_REFCURSOR;
L_QUERY  VARCHAR2(5000) DEFAULT 'SELECT ...';

BEGIN

  OPEN L_CURSOR FOR L_QUERY;
  RETURN L_CURSOR;

END;

Jika Anda ingin memasukkan variabel bind dalam SQL dinamis:

FUNCTION MY_FUNCTION()
RETURN SYS_REFCURSOR

L_CURSOR SYS_REFCURSOR;
L_QUERY  VARCHAR2(5000) DEFAULT 'SELECT ...';

BEGIN

  OPEN L_CURSOR FOR L_QUERY
   USING bind_var1;
  RETURN L_CURSOR;

END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat grafik menggunakan PHP dari oracle

  2. ora-01406 Kesalahan saat mengambil nilai menggunakan OCI

  3. Bagaimana melanjutkan while loop setelah pengecualian dimunculkan di SQL

  4. menghitung jam berdasarkan jam kerja di Oracle SQL

  5. Mengapa EXECUTE IMMEDIATE diperlukan di sini?