다음 코드를 이용하여 서로 다른 방법으로 아웃해야 노력했다고 하지만, 동시에 같은 경우 모두를 (동안 경우) 또는 때, 난 항상 내가 동일팔레트에 내려받습니다 및끝 오류가 있습니다.
undefine numero
set serveroutput on
accept numero prompt 'Type # between 100 and 999: '
declare
i number:=1;
a char(25);
b char(1);
c varchar2(10);
d number;
begin
c := №
d := length(c);
b := substr(c, i, 1);
while i <= d loop
if b = '1' then
a:= a||'one ';
end if;
i := i+1;
end loop;
dbms_output.put_line('The number is '||a);
end;
/
오류:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 13
06502. 00000 - "PL/SQL: numeric or value error%s"
a varchar2(2000);
>. PL/SQL: 숫자 값 또는 오류: 문자열을 버퍼가 너무 작습니다.
선언할 수 있는 것은 사실로 인한 문자열으로 코드에서 고정된 길이 (말하도다 20), 그리고 어떤 점에서 그 가치를 너회가 할당하십시오 너희는너희가 초과함을 길이 없다.
예를 들면 다음과 같습니다.
myString VARCHAR2(20);
myString :='abcdefghijklmnopqrstuvwxyz'; --length 26
이러한 오류는 거역한다면 불지옥의
많은 공간을 사용하는 데이터 유형 '은' 챨 고정 길이 수 있다. 그래서 '= a & # 39, & # 39 는:;;)' 가 1 보다 더 많은 공간을 필요로 할 사용할 수 있습니다. 다음 예를 통해 문제를 줄일 수 있다.
declare
v_foo char(50);
begin
v_foo := 'A';
dbms_output.put_line('length of v_foo(A) = ' || length(v_foo));
-- next line will raise:
-- ORA-06502: PL/SQL: numeric or value error: character string buffer too small
v_foo := v_foo || 'B';
dbms_output.put_line('length of v_foo(AB) = ' || length(v_foo));
end;
/
사용하지 않는 '챨'. 다음 질문에 대한 근거 확인란 (읽기 또한 링크):