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吗?! 这怎么这么小呀?!哪位高手知道怎么设置吗?
解决方案 »
- 急!!如何查看上一个版本的视图信息?
- oracle 序列不能赋值给变量吗?
- =============update语句为什么要这么写啊?==========
- 怎么根据表中的某个字段,删除掉重复的数据
- 各位大侠帮我解释一下,下面的@colm2 还有4和20 是什么意思? 谢谢!
- jsp访问oracle数据库很慢,请知道原因的朋友帮忙
- 【oracle服务名】?~~【全局例程】?~~【本地例程】?~~
- 有高手帮我吗?!(delete 问题)
- 看看这个SQL语句错在哪里?在线等待!
- 求助Windows2008 下的Oracle :em-application.log文件过大,可以删除吗?
- 求一条Sql语句,余额操作
- ORACLE高级复制作同步,如何设置的???在线
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;
/
没有问题