用的数据库是 oracle 10.2. , PLSQL 7.1 。 我自己做了个测试
create or replace procedure te1(ResBuff out Varchar2) is
begin
ResBuff := LPAD('a',2001,'b');
end ;执行结果报错:
ORA-06502:PL/SQL:number or value error:character string buffer too small
长度2000的时候正常,配置默认的NLS_LANGUAGE = AMERICAN;NLS_CHARACTERSET = ZHS16GBK;补充,这个输出参数Varchar2最大支持长度能修改吗?
create or replace procedure te1(ResBuff out Varchar2) is
begin
ResBuff := LPAD('a',2001,'b');
end ;执行结果报错:
ORA-06502:PL/SQL:number or value error:character string buffer too small
长度2000的时候正常,配置默认的NLS_LANGUAGE = AMERICAN;NLS_CHARACTERSET = ZHS16GBK;补充,这个输出参数Varchar2最大支持长度能修改吗?
解决方案 »
- 求救!!java.sql.SQLException: Io 异常: The Network Adapter could not establish the co
- sybase触发器转成oracle~~大家帮忙看看~
- connect by prior的问题!
- 关于Oracle数据库并行问题
- 用asp连接oracle数据库时只要加入查询条件,即使数据库中有满足条件的数据,返回的结果也是空的。
- 高手进来看一下,这条ORACLE存储过程怎样写?
- ORA-01033: ORACLE initialization or shutdown in progress
- 如何使用copy from
- 增加数据的问题
- VB+OO4O如何能够得到某一Schema下所有的表名称?
- imp 出错
- 线路表关联价格表怎样取最低价格
最大支持4000,我完全没发现你说的问题
create or replace procedure te1(ResBuff out Varchar2) is
begin
ResBuff := LPAD('a',2001,'b');
end ;
DECLARE
a varchar2(3000);
BEGIN
te1(a);
dbms_output.put_line(a);
END;
而对于字段来说varchar2类型的最大长度是4000
例:SQL> create or replace procedure testproc(
2 p_len int,
3 p_var out varchar2)
4 is
5 begin
6 p_var := lpad('a',p_len,'b');
7 end ;
8 /过程已创建。SQL> declare
2 v_var varchar2(32767);
3 v_len int := 32767;
4 begin
5 testproc (v_len,v_var);
6 dbms_output.put_line(length(v_var));
7 end;
8 /
32767 PL/SQL 过程已成功完成。
参考这个