2007年7月23日

なんとか引数のサイズを指定できないものかと思い、
資料を読んでいると「サブタイプ」なるものを発見!!
これはイケルと思い試してみました。

テスト用パッケージ仕様部のソース

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

posted @ 15:17 | Feedback (263)