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

Oracle PL/SQL Membuat tabel di kursor?

Biasanya Anda tidak melakukan DDL (buat, ubah, jatuhkan) di dalam prosedur PL/SQL Anda. Jika Anda memerlukan tabel untuk menyimpan beberapa data sementara, Anda dapat membuat tabel sementara untuk tujuan ini. Dalam kasus Anda, pertama-tama saya akan membuat tabel

CREATE GLOBAL TEMPORARY TABLE T1
  (
    col1 VARCHAR2(128),
    col2  VARCHAR2(128),
    col3 NUMBER(3) NOT NULL,
    col3 FLOAT(100)
  );

CREATE GLOBAL TEMPORARY TABLE T2 AS
SELECT * FROM other_table WHERE 1 = 0;

Dan kemudian prosedurnya akan terlihat seperti ini

DECLARE
CURSOR CUR IS ...
BEGIN
       FOR rec IN CUR
       LOOP
       --Do stuff here
         END LOOP;

DELETE FROM T1;
DELETE FROM T2;
END;
/

Tentu saja tabel tidak akan dihapus setelah itu, tetapi saya kira Anda ingin menggunakan prosedur PL/SQL Anda secara teratur, tidak hanya sekali, bukan?

Jika Anda masih ingin melakukan DDL dalam prosedur Anda, maka Anda harus menggunakan sql dinamis (langsung eksekusi). Namun Anda harus menyadari bahwa operasi DDL melakukan komitmen implisit, sehingga prosedur Anda tidak akan menjadi transaksi atom tunggal.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO_OCI - ke dalam bidang gumpalan

  2. menambahkan kunci utama ke tampilan sql

  3. Cara membagi pernyataan sql Oracle untuk ADO.NET

  4. Bagaimana menangani pengecualian dan mengeksekusi pernyataan yang tersisa?

  5. Oracle.DataAccess.dll tidak dapat ditemukan meskipun ada