通常-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
コールが完了しました。