なんとか引数のサイズを指定できないものかと思い、
資料を読んでいると「サブタイプ」なるものを発見!!
これはイケルと思い試してみました。
テスト用パッケージ仕様部のソース
create or replace PACKAGE "TEST" IS
SUBTYPE varchar2SubType IS VARCHAR2(8);
FUNCTION SUBTYPE_TEST
(
inParameter IN varchar2SubType
)
RETURN NUMBER;
PROCEDURE TM_SUBTYPE_TEST;
END "TEST";
テストパッケージ本体部のソース
create or replace PACKAGE BODY "TEST" IS
FUNCTION SUBTYPE_TEST
(
inParameter IN varchar2SubType
)
RETURN NUMBER
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('SUBTYPE_TEST' || inParameter);
RETURN 0;
END;
PROCEDURE TM_SUBTYPE_TEST
IS
ret NUMBER(1);
BEGIN
ret := TEST.SUBTYPE_TEST('12345678901234567890');
END;
END "TEST";
んで、テストプロシージャ「TM_SUBTYPE_TEST」の実行結果(DBMS_OUTPUTの値)がこれ
SUBTYPE_TEST12345678901234567890
8桁以上受け付けてるじゃないですか・・・
絶望しましたorz