소수점 계산 문의드립니다. 0 6 3,099

by lgxj20 [Oracle 기초] [2017.08.17 10:43:21]


소수점 연산떄문에 문의드립니다.

SELECT 해서 나온결과값들을 각각  변수 NUMBER(10,2) 에담아서 연산을하려는데 ORA-06502: PL/SQL: 수치 또는 값 오류: 문자를 숫자로 변환하는데 오류입니다 이런에러가나서 문의드립니다.

프로시져에서 DBMS_OUTPUT.put_line으로 변수에 담긴 값을 확인해보니 A 는 .5 , B 는 0 , C 는 .5 이렇게 나와서

A+B+C를 할때 ORA가 발생하는거 같은데..변수 타입문제인가요?

by 마농 [2017.08.17 10:51:22]

들어오는 값이 '.5', '0' 등이 들어온다면 문제 없습니다.
숫자로 변환 불가능한 값이 들어오는 것입니다.
에러날 때의 값을 찍어 보세요.


by lgxj20 [2017.08.17 10:55:33]

DBMS_OUTPUT.PUT_LINE으로 찍어 보는곳에서 에러가나네요

그래서 주석으로 처리하니까 문제 없이 진행이 됩니다.

DBMS_OUTPUT.PUT_LINE(NVL(A,0)+NVL(B,0)+NVL(C,0));

이렇게 하니 에러가 나네요.


by 마농 [2017.08.17 11:02:44]

sqlplus 에서 프로시져 실행할 때
루프 안에서 output 을 너무 많이 찍으면 해당 에러가 납니다.
set serveroutput on size unlimited


by jkson [2017.08.17 11:09:06]

헛 몰랐던 사실이네요.

set serveroutput on size unlimited

감사합니다.


by 우리집아찌 [2017.08.17 10:53:39]

문자값으로 넘어온거 갔아요. TO_NUMBER() 사용해보세요.


by jkson [2017.08.17 11:12:16]

DBMS_OUTPUT.PUT_LINE(A || ' ' || B || ' ' || C); --> 이거 먼저 찍어주고

DBMS_OUTPUT.PUT_LINE(NVL(A,0)+NVL(B,0)+NVL(C,0));

하셔서 오류날 때 a, b, c 값을 확인해보세요~ 숫자가 아닐걸요~~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입