sql >> Database teknologi >  >> RDS >> Oracle

Oprettelse af databasetabel i PL/SQL procedure

Begge procedurer skal bruge dynamisk SQL:

  • print_info fordi den indsætter i en tabel, som - på kompileringstidspunktet - ikke eksisterer endnu
  • create_table fordi den kører DDL og - for at gøre det - skal du bruge dynamisk SQL

Derfor:

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. Opdater en kolonneværdi og erstatter en del af en streng

  2. Oracle Lag funktion med dynamisk parameter

  3. en effektiv måde at teste, om der findes en tabelrække

  4. Oracle instant client:ORA-28759:fil kan ikke åbnes