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

Tạo bảng cơ sở dữ liệu trong thủ tục PL / SQL

Cả hai thủ tục đều phải sử dụng SQL động:

  • print_info bởi vì nó chèn vào một bảng - tại thời điểm biên dịch - chưa tồn tại
  • create_table vì nó chạy DDL và - để làm được điều đó - bạn cần sử dụng SQL động

Do đó:

SQL> CREATE OR REPLACE PROCEDURE PRINT_INFO
  2  IS
  3  BEGIN
  4    execute immediate q'[INSERT INTO TABLE_T (TABLE_ID, MESSAGE) VALUES (1, 'Hello World!')]';
  5  END PRINT_INFO;
  6  /

Procedure created.

SQL> CREATE OR REPLACE PROCEDURE CREATE_TABLE
  2  IS
  3  BEGIN
  4    execute immediate 'CREATE TABLE TABLE_T(' ||
  5      'TABLE_ID NUMBER NOT NULL, ' ||
  6      ' MESSAGE VARCHAR2(25), '    ||
  7      ' PRIMARY KEY(TABLE_ID) '    ||
  8      ')';
  9
 10    PRINT_INFO;
 11  END CREATE_TABLE;
 12  /

Procedure created.

SQL> EXEC CREATE_TABLE;

PL/SQL procedure successfully completed.

SQL> SELECT * FROM table_t;

  TABLE_ID MESSAGE
---------- -------------------------
         1 Hello World!

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng điền phạm vi

  2. ExecuteNonQuery luôn trả về số không. Tôi có thể sử dụng giá trị 0 này vào mã của mình để xác thực không?

  3. Trở về từ Thế giới mở 2013

  4. Cách chèn hàng loạt dữ liệu từ con trỏ tham chiếu vào bảng tạm thời trong PL / SQL

  5. sự khác biệt giữa từ khóa tham gia và từ khóa tham gia bên trong trong sql oracle là gì?