動的SQL実行プロシージャ
INDEX の REBUILD などをPLSQLで実行するときは
execute immediateだとddlの実行ができないので
通常はDBMS_SQLパッケージを使用するとおもいますが
なんかSQL実行したいだけなのにいろいろと記述しなきゃいけなくて
めんどくさいのでSQL投げたら実行してくれるプロシージャを作ってみた。
PROCEDURE EXEC_SQL(SQL_TEXT IN VARCHAR2) IS V_CURSOR INTEGER; V_POSITION INTEGER; BEGIN V_CURSOR := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(V_CURSOR,SQL_TEXT, DBMS_SQL.NATIVE); V_POSITION := DBMS_SQL.EXECUTE(V_CURSOR); DBMS_SQL.CLOSE_CURSOR(V_CURSOR); END;
ただし、SELECTは不可、INSERT,UPDATE,DELETEではバインド不可
使い道が限られそう