CREATE OR REPLACE PROCEDURE TEST
(param IN OUT NOCOPY string ) AS
c varchar2(20000);
BEGIN
for i in 1..201 loop
c:=c||'a';
end loop;
param:=c;
END;
如上代码,如果输出为200字符的话则可以正确输出,
若是201个则会出现ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小.在pl/sql 里面 varchar2不是32767吗?! 这怎么这么小呀?!哪位高手知道怎么设置吗?
(param IN OUT NOCOPY string ) AS
c varchar2(20000);
BEGIN
for i in 1..201 loop
c:=c||'a';
end loop;
param:=c;
END;
如上代码,如果输出为200字符的话则可以正确输出,
若是201个则会出现ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小.在pl/sql 里面 varchar2不是32767吗?! 这怎么这么小呀?!哪位高手知道怎么设置吗?
param IN OUT NOCOPY string
) AS
c varchar2(32000);
BEGIN
for i in 1..20100 loop
c:=c||'a';
end loop;
param:=c;
END;
/
DECLARE
vs_param varchar2(32000);
begin
vs_param :='123';
-- Call the procedure
test(param => vs_param );
dbms_output.put_line( length( vs_param) );
-- 20100
end;
/
没有问题