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

Oracle PL / SQL Tạo bảng trong con trỏ?

Thông thường, bạn không thực hiện các DDL (tạo, thay đổi, thả) bên trong thủ tục PL / SQL của mình. Nếu bạn cần một bảng để lưu trữ một số dữ liệu tạm thời, bạn có thể tạo bảng tạm thời vì mục đích này. Trong trường hợp của bạn, trước tiên tôi sẽ tạo các bảng

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;

Và sau đó thủ tục sẽ như thế này

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

DELETE FROM T1;
DELETE FROM T2;
END;
/

Tất nhiên các bảng sẽ không bị xóa sau đó, nhưng tôi cho rằng bạn muốn sử dụng thủ tục PL / SQL của mình thường xuyên, không chỉ một lần, phải không?

Nếu bạn vẫn muốn định dạng DDL trong quy trình của mình, thì bạn phải sử dụng sql động (thực hiện ngay lập tức). Tuy nhiên, bạn phải lưu ý rằng các hoạt động DDL thực hiện các cam kết ngầm, vì vậy thủ tục của bạn sẽ không phải là một giao dịch nguyên tử duy nhất.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tách câu lệnh sql Oracle cho ADO.NET

  2. Sử dụng where in trong spring-jdbc

  3. ví dụ về cú pháp nối oracle

  4. Cách sử dụng các tham số SQL trong một đoạn SQL đánh dấu R

  5. Oracle - Làm cách nào để lấy kích thước thực của ROW cụ thể?