sql >> データベース >  >> RDS >> Oracle

PL/SQLプロシージャでデータベース表を作成する

    どちらの手順でも動的SQLを使用する必要があります:

    • print_info コンパイル時にまだ存在しないテーブルに挿入するためです
    • create_table DDLを実行するため、そのためには動的SQLを使用する必要があります

    したがって:

    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. MYSQL日付が日時より古い行を選択します

    2. ストアドプロシージャを使用して、SQLServer2005の文字列にサブ文字列が含まれているかどうかを確認します

    3. MySQLに書き込むときにTextAreaからの改行を保持する

    4. すべての列の最も一般的な値を取得します