三流備忘録OracleのSQL PL/SQL 関数 ついての備忘録
値の代入
値の代入
--【変数宣言】
v_hoge VARCHAR2(20);
i_hoge INTEGER :=0;
--【代入】
v_hoge := 'hoge';
v_hoge := v_hoge || 'hoge';
i_hoge := 10 * 3 ;
i_hoge := i_hoge * 2;
--【出力】
DBMS_OUTPUT.PUTLINE('v_hoge=' || v_hoge);
DBMS_OUTPUT.PUTLINE('i_hoge=' || i_hoge);
--【出力結果】
v_hoge=hogehoge
i_hoge=60
ブール値の代入
--【変数宣言】
b_hoge BOOLEAN;
--【代入】
b_hoge := FALSE;
SQL問い合わせ結果の代入(SELECT INTO)
DECLARE
w_hogeid HOGE.hogeid%TYPE;
w_hogename HOGE.hogename%TYPE;
BEGIN
/*****************************************************************
SELECT の結果が複数行の場合にはエラーになります。
/*****************************************************************
SELECT hogeid,hogename
INTO w_hogeid,w_hogename
FROM HOGE
WHERE hogeid = 1;
DBMS_OUTPUT.PUTLINE('w_hogeid=' || w_hogeid);
DBMS_OUTPUT.PUTLINE('w_hogeid=' || w_hogename);
END;
SQL問い合わせ結果の代入(BULK COLLECT)
CREATE OR REPLACE PROCEDURE DSNEOETS.TEST_BULKCOLLECT
IS
/* コレクション宣言 */
TYPE hoge_type1 IS TABLE OF TBL_HOGE.HOGE_ID%TYPE;
TYPE hoge_type2 IS TABLE OF TBL_HOGE.HOGE_NAME%TYPE;
HOGE_DATA1 hoge_type1;
HOGE_DATA2 hoge_type2;
cnt INTEGER;
BEGIN
/* 取得 */
SELECT HOGE_ID,HOGE_NAME
BULK COLLECT INTO HOGE_DATA1,HOGE_DATA2
FROM TBL_HOGE;
cnt := HOGE_DATA1.first;
/* 結果出力 */
WHILE cnt IS NOT NULL
LOOP
DBMS_OUTPUT.PUT_LINE('要素:' || HOGE_DATA1(cnt));
DBMS_OUTPUT.PUT_LINE('要素:' || HOGE_DATA2(cnt));
cnt := HOGE_DATA1.next(cnt);
END LOOP;
END;