TIPS |
ひな型 |
-- PACKAGE
CREATE OR REPLACE PACKAGE PKG_XXXXX
AS
--
PROCEDURE xxxx(ret OUT NUMBER);
--
END PKG_XXXXX;
/
-- PACKAGE BODY
CREATE OR REPLACE PACKAGE BODY PKG_XXXXX
AS
--
PROCEDURE xxxx(ret OUT NUMBER)
AS
BEGIN
END xxxx;
--
END PKG_XXXXX;
/
|
IF |
IF TRIM(AAA) IS NULL THEN
END IF;
|
エラー捕捉 |
BEGIN
SELECT 1 FROM DUAL;
EXCEPTION
WHEN NO_DATA_FOUND THEN --データなしエラー
RETURN;
WHEN OTHERS THEN --その他のエラー(catch対象以外の場合)
-- SQLERR_CD : SQLエラーコード
-- SQLERRM : SQLエラーメッセージ
RAISE_APPLICATION_ERROR(SQLERR_CD||SQLERRM);
END;
|
SELECT INTO |
v_xxx VARCHAR(100) DEFAULT NULL;
-- 取得したa.xxxの内容を変数v_xxxに入れる
SELECT a.xxx
INTO v_xxx
FROM a_tbl;
|
カーソル |
--宣言
CURSOR CUR_A IS select * from a_tbl;
REC_A CUR_A%ROWTYPE;
--フェッチ
OPEN CUR_A;
FETCH CUR_A IN REC_A;
-- ループ
OPEN CUR_A;
FOR REC_A IN CUR_A
LOOP
END LOOP;
--カーソルを閉じる
CLOSE CUR_A;
|
カーソル属性 |
%FOUND | (フェッチ後)データあり |
%NOTFOUND | (フェッチ後)データなし |
%ROWCOUNT | 件数 |
%ROWTYPE | 選択したフィールド全体 |
|
全角チェック |
CREATE OR REPLACE FUNCTION F_ZENKAKU(
PARAM1 IN VARCHAR2
) RETURN INTEGER
IS
RET INTEGER; -- 0:全角, -1:半角あり
WORK VARCHAR2(1000);
BEGIN
RET := 0;
FOR CNT IN 1..LENGTH(PARAM1) LOOP
WORK := SUBSTR(PARAM1, CNT, 1);
IF LENGTH(WORK) = LENGTHB(WORK) THEN
RET := -1;
EXIT;
END IF;
END LOOP;
RETURN RET;
END;
|
空白をTRIMすると |
LENGTH(TRIM(' '))はNULL(0にならない)
|
xxxxxx |
-- 変数宣言の際にNOT NULLを付けると、代入の度にNULLチェックが行なわれる
v NUMBER NOT NULL := 0;
-- NOT NULLが不要であれば外す
v NUMBER := 0;
|