EXECUTE プロシージャー - 解析済み SQL ステートメントの実行
EXECUTE 関数は、解析済み SQL ステートメントを実行します。
構文
パラメーター
- c
- 実行する解析済み SQL ステートメントのカーソル ID を指定する、タイプ INTEGER の入力引数。
- ret
- SQL コマンドが DELETE、INSERT、または UPDATE の場合に処理された行数を戻す、タイプ INTEGER の出力引数。それ以外の場合は 0 を戻します。
許可
DBMS_SQL モジュールに対する EXECUTE 特権。
使用上の注意
このプロシージャーは、PL/SQL 割り当てステートメントで関数呼び出し構文を使用して呼び出すことができます。
例
例 1: 次の無名ブロックは、「DEPT」表に行を挿入します。
SET SERVEROUTPUT ON@
CREATE TABLE dept (
deptno DECIMAL(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
dname VARCHAR(14) NOT NULL,
loc VARCHAR(13),
CONSTRAINT dept_dname_uq UNIQUE( deptno, dname )
)@
BEGIN
DECLARE curid INTEGER;
DECLARE v_sql VARCHAR(50);
DECLARE v_status INTEGER;
CALL DBMS_SQL.OPEN_CURSOR(curid);
SET v_sql = 'INSERT INTO dept VALUES (50, ''HR'', ''LOS ANGELES'')';
CALL DBMS_SQL.PARSE(curid, v_sql, DBMS_SQL.native);
CALL DBMS_SQL.EXECUTE(curid, v_status);
CALL DBMS_OUTPUT.PUT_LINE('Number of rows processed: ' || v_status);
CALL DBMS_SQL.CLOSE_CURSOR(curid);
END@この例では、以下の出力が結果として戻ります。
SET SERVEROUTPUT ON
Db20000I The SET SERVEROUTPUT command completed successfully.
CREATE TABLE dept
( deptno DECIMAL(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
dname VARCHAR(14) NOT NULL,
loc VARCHAR(13),
CONSTRAINT dept_dname_uq UNIQUE( deptno, dname ) )
Db20000I The SQL command completed successfully.
BEGIN
DECLARE curid INTEGER;
DECLARE v_sql VARCHAR(50);
DECLARE v_status INTEGER;
CALL DBMS_SQL.OPEN_CURSOR(curid);
SET v_sql = 'INSERT INTO dept VALUES (50, ''HR'', ''LOS ANGELES'')';
CALL DBMS_SQL.PARSE(curid, v_sql, DBMS_SQL.native);
CALL DBMS_SQL.EXECUTE(curid, v_status);
CALL DBMS_OUTPUT.PUT_LINE('Number of rows processed: ' || v_status);
CALL DBMS_SQL.CLOSE_CURSOR(curid);
END
Db20000I The SQL command completed successfully.
Number of rows processed: 1
