「Oracle」EXECUTEで動的SQL構文を実行するサンプル

2021年8月12日

書式
CREATE OR REPLACE PROCEDURE xxx
EXECUTE IMMEDIATE {SQL構文};

変数の構成
変数1:SQL文の文字列
変数2:テーブル名の変数
変数3:テーブルのカラム

使用例

CREATE OR REPLACE PROCEDURE INSERTUSERPRO
IS
  CFT VARCHAR2(720);
  CFTTBL VARCHAR2(20); 
  CFTDEP VARCHAR2(10); 
  CFTNAME VARCHAR2(80); 
BEGIN
  CFT := '';
  CFTTBL := 'USER_TBL';
  CFTDEP := '1002';
  CFTNAME := '開発部'; 

  --挿入SQL文を変数CFTで作成
  CFT := 'INSERT INTO '
  CFT := CFT || CFTTBL;
  CFT := CFT || ' (DEPID,DEPNAME)';
  CFT := CFT || ' VALUES ('
  CFT := CFT || CFTDEP 
  CFT := CFT || CFTNAME 
  CFT := CFT || ')'; 

  --動的SQL構文を実行
  EXECUTE IMMEDIATE CFT;
  COMMIT;
END;

 

Oracle

Posted by arkgame