PL/SQL Procedure out varchar2 最大长度

假设有以下两个存储过程

create or replace procedure P_OUT_VARCHAR2_PRO(num in number, res out varchar2) is
  v_varchar  varchar2(10);
long_of_res number;
begin
v_varchar := 'abcdeabcde';
for i in 1..num
loop
res := res||v_varchar;
end loop;
long_of_res := length(res);
dbms_output.put_line('The length of out varchar2: '||to_char(long_of_res) );
end P_OUT_VARCHAR2_PRO;


create or replace procedure P_CALL_OUT_VARCHAR2_PRO(num in varchar2) is
  v_retrun_varchar     varchar2(30000);
long_of_res number;
begin
P_OUT_VARCHAR2_PRO(num, v_retrun_varchar);
long_of_res := length(v_retrun_varchar);
dbms_output.put_line('The length of res: '||to_char(long_of_res) );
end P_CALL_OUT_VARCHAR2_PRO;

第一个procedure P_OUT_VARCHAR2_PRO能够返回的字符串大小,取决于第二个procedure P_CALL_OUT_VARCHAR2_PRO提供的字符串缓冲区大小,即v_retrun_varchar的长度. 最大可为32767.

另外,Oracle默认procedure的out varchar2的长度是2000,所以在单独Test  P_OUT_VARCHAR2_PRO时,如果res的长度超过2000就会报字符串缓冲区太小的错误。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
什么是集合? 集合是用来存放大量数据的一种容器 PL/SQL有三种集合 联合数组 嵌套表 可变数组 联合数组详解: 什么是数组?数组有什么特点 数据是线性存放的,在内存中地址是连续的 可以用索引来访问 定义联合数组? 联合数组不需要定义长度,他能容纳的元素最大数量是-214483647-到214483647 联合数组的索引不是连续的,只要在上面的范围内就可以 嵌套表示例代码: declare --声明嵌套表数据类型 type mytype is table of varchar2(100); --声明嵌套表变量 嵌套表必须初始化 var1 mytype:=new mytype('a','b','c') begin var1.extend(2);--在数组后加了两个空间 var1(1):='a'; var1(6):='a';--超出空间 end; 可变数组的代码 declare --定义可变数组 --else if 的缩写 elsif --varray variable array两个单词的缩写 --数字定义可变数组的最大长度 type mytype is varray(100) of varchar2(100); --定义可变数组变量 --可变数组也必须初始化 var1 mytype:=new mytype('a','b','c'); begin var1.extend(2); var1(4):='d'; end; 集合的属性和方法 1.count属性计数 ,可以得到集合的元素数量 2.delete方法 3.exists 判断这个元素是否存在,exists(x) 4.extend方法 不带参数加一个元素 extend(x)加x个元素 extend(x,y) 5.first属性,返回第一个元素的下标 6.last 属性,赶回最后一个元素的下标 7.limit属性 ,返回集合中最大元素的个数 8.next属性,next(x)返回位置x处的后面的那个元素 的索引 9.prior属性 prior(x)返回 x处前面的那个元素的下标 10.trim 方法 删除元素,删除集合中最后一个元素 trim(x)删除集合中末尾x个元素 voa special english 英文电台 第三章 存储过程和函数 什么是过程?所有的pl/sql都叫过程 创建存储过程: create or replace procedure p1 (v1 int ,v2 int)--存储过程的参数列表 as --声明局部变量 begin null; end; 调用过程 1.declare调用 2.命令调用 删除存储过程:drop procedure p1; 学习状态:学一个东西,有欲望,写东西出来 三段式:被动,自发,自动 java-web 自己写一个,从四月开始到中旬任务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值