oracle out in procedure
Posted
技术标签:
【中文标题】oracle out in procedure【英文标题】: 【发布时间】:2015-07-03 13:45:55 【问题描述】:我正在尝试创建以下过程
create or replace procedure format_phone (ph in out varchar2) is
begin
ph:='('||substr(ph,1,3)||
')' || substr(ph,4,6)||
'-'||substr(ph,7);
end;
/
declare
ph varchar2(11):='8006330575';
begin
format_phone(ph);
end;
/
抛出此异常:
Error starting at line 1 in command:
declare
ph varchar2(11):='8006330575';
begin
format_phone(ph);
end;
Error report:
ORA-06502: PL/SQL: خطأ رقمي أو قيمة: character string buffer too small
ORA-06512: عند "HR.FORMAT_PHONE", line 3
ORA-06512: عند line 4
06502. 00000 - "PL/SQL: numeric or value error"
【问题讨论】:
【参考方案1】:你只需要数一数,当 ph 定义为 varchar(11) 时,它的长度已经是 10 个字符了。
在函数中再添加 3 个,所以 10 + 3 = 13
13 > 11 => 字符串缓冲区太小
如果初始字符串的长度为 10,则必须将 ph 定义为最小值 varchar(13)
【讨论】:
关闭,8006330575
的输出是 (800)633057-0575
,即 16 个字符。以上是关于oracle out in procedure的主要内容,如果未能解决你的问题,请参考以下文章
Oracle中“IN”和“IN OUT”CURSOR参数的区别
Oracle 存储过程问题 - IN 和 OUT 变量是无效标识符 [关闭]
索引处缺少 IN 或 OUT 参数:: Java、Oracle 中的 1 个错误