SQL – stored procedure

通常-oracle

SQL> create or replace procedure sample_proc(v_id in char,v_name out varchar2) as
 2   begin
 3    dbms_output.put_line('v_id:' || v_id);
 4    v_name := 'なまえ';
 5   end sample_proc;
 6   /

プロシージャが作成されました。

SQL> variable v_name varchar2(10)
SQL> execute sample_proc('ID01',:v_name)
v_id:ID01

PL/SQLプロシージャが正常に完了しました。

SQL> print v_name

V_NAME
--------------------------------
なまえ

SQL>

どこかで見つけたサンプル

CREATE OR REPLACE PROCEDURE RIVUS.STEP01_SELECT3(P_DATA_1 IN VARCHAR2)
IS
    CURSOR cDual(P_DATA_2 VARCHAR2 := 'CURSOR param') IS
        SELECT P_DATA_1 COLNAME_1 FROM DUAL
            UNION ALL SELECT P_DATA_2 COLNAME_1 FROM DUAL ;
    vRec    cDual%ROWTYPE;
BEGIN
    OPEN cDual('yyy') ;  -- 引数付きのカーソルをオープン
    LOOP
        FETCH cDual INTO vRec; -- カーソルの内容をフェッチする
        EXIT WHEN cDual%NOTFOUND;
        DBMS_OUTPUT.PUT(cDual%ROWCOUNT || ':');
        DBMS_OUTPUT.PUT_LINE(vRec.COLNAME_1);
    END LOOP;
    CLOSE cDual; -- 使用済のカーソルは必ずクローズすること
END;
/
--
-- 実行結果
SQL> call step01_select3('SELECT3');
1:SELECT3
2:yyy

コールが完了しました。

コメント

タイトルとURLをコピーしました