首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

在PLSQL中,存储过程的输出参数(varchar2)最大支持多大?该怎么解决

2012-08-26 
在PLSQL中,存储过程的输出参数(varchar2)最大支持多大?用的数据库是 oracle 10.2. , PLSQL 7.1 。我自己做

在PLSQL中,存储过程的输出参数(varchar2)最大支持多大?
用的数据库是 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最大支持长度能修改吗?

[解决办法]

最大支持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;
[解决办法]
你是不是在DECLARE变量的时候,只定义了2000的长度。最长可以是4000
[解决办法]
存储过程中varchar2类型的变量,最大长度可以达到缓冲区的最大长度,即32767
而对于字段来说varchar2类型的最大长度是4000
例:

SQL code
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 过程已成功完成。 

热点排行
Bad Request.