오류 좀 봐주세요 ~ PL/SQL 0 4 5,214

by 알데바란 [2012.07.26 17:30:11]



ora-06502 pl/sql 수치 또는 값 오류 숫자 정도가 너무 큽니다 at line : 25
at line : 2
라는 오류가 이렇게 발생하는데요 ..
도와주세요 ㅠㅠ 모르겠습니다 뭣땜에 그러는지

CREATE OR REPLACE FUNCTION INSERT_SYMBOL_INFO(PR_DRWNG_SERNO IN NUMBER,  PR_SYMBOL_CD IN VARCHAR2) RETURN CHAR IS
SYMBOL_LIST VARCHAR2(32000);    -- 심볼목록
OBJECT_LAYER VARCHAR2(256); -- 입력되는 레이어 항목
OBJECT_SYMBOL VARCHAR2(256);    -- 입력되는 심볼 항목
CNT NUMBER(4);   -- 해당 심볼 개수
BSIZE Integer; --추


BEGIN

    SYMBOL_LIST := PR_SYMBOL_CD;
    OBJECT_SYMBOL := '';
    OBJECT_LAYER := '';
    CNT := 0;

    -- 심볼 항목 등록
    IF SYMBOL_LIST <> ' ' AND SYMBOL_LIST IS NOT NULL THEN
    LOOP
    EXIT WHEN SYMBOL_LIST IS NULL OR SYMBOL_LIST = ' ';

    -- 레이어 항목 추출

    OBJECT_SYMBOL := SUBSTR(SYMBOL_LIST, 1 , INSTR(SYMBOL_LIST, '|#@') - 1);
    SYMBOL_LIST := SUBSTR(SYMBOL_LIST, INSTR(SYMBOL_LIST, '|#@') +3);

    -- 심볼개수 추출
    CNT := SUBSTR(SYMBOL_LIST, 1 , INSTR(SYMBOL_LIST, '|#@') - 1);
    SYMBOL_LIST := SUBSTR(SYMBOL_LIST, INSTR(SYMBOL_LIST,
'|#@') +3);

    -- 심볼목록 추출
    --OBJECT_SYMBOL := SUBSTR(SYMBOL_LIST, 1 , INSTR(SYMBOL_LIST, '|#@') - 1);
    --SYMBOL_LIST := SUBSTR(SYMBOL_LIST, INSTR(SYMBOL_LIST, '|#@') +3);

    -- 심볼개수 추출
    IF INSTR(SYMBOL_LIST, '*#@') = 0 THEN
    OBJECT_LAYER := SYMBOL_LIST;
    SYMBOL_LIST := '';
    ELSE
    OBJECT_LAYER := SUBSTR(SYMBOL_LIST, 1 , INSTR(SYMBOL_LIST, '*#@') - 1);
    SYMBOL_LIST := SUBSTR(SYMBOL_LIST, INSTR(SYMBOL_LIST, '*#@') +3);
    END IF;

    IF OBJECT_SYMBOL <> ' ' AND OBJECT_SYMBOL IS NOT NULL AND OBJECT_LAYER <> ' ' AND    OBJECT_LAYER IS NOT NULL AND CNT > 0 AND CNT IS NOT NULL THEN

    INSERT INTO DRWNG_SYMBOL_TBL(DRWNG_SERNO, DRWNG_SYMBOL, DRWNG_LAYER, SYMBOL_CNT)
    VALUES (PR_DRWNG_SERNO, OBJECT_SYMBOL, OBJECT_LAYER, CNT);

    END IF;


    END LOOP;
    END IF;

    RETURN 'Y';

END EEAM_INSERT_SYMBOL_INFO;
/

by 부쉬맨 [2012.07.26 18:29:00]
노란색표시는 저기때문에
났을꺼라고 생각하신다면
저같으면 저런유형의 데이터는
디버깅모드로 데이터를 살려볼꺼같습니다.

아님 데이터의 크기가 커서 그른거같은에러이니

해당 varchar컬럼의 크기가 진짜 저런지
length 로 받아서 dbms_out.put으로 보는방법도 하나의방법입니다.

by 마농 [2012.07.26 19:45:37]

오류 메시지는 숫자와 관련된 메시지 이네요.
cnt 가 4자리인데 이게 작아서 그럴 수도 있고.
insert 할때 DRWNG_SERNO 나 SYMBOL_CNT 의 크기가 작아서 그럴수도 있구요


by 알데바란 [2012.07.27 09:31:31]

부쉬맨님 PL/SQL 변수이구요. 컬럼 아닙니다.


by 알데바란 [2012.07.27 09:31:55]
 감사합니다 ^^ 해결해볼게요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입