请问ora-06502:pl/sql:数字或值错误:字符串缓冲区太小 这个错误怎么解决啊?

wanas 2004-03-25 01:49:53
万分感谢。
...全文
1728 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongfang73 2004-03-31
  • 打赏
  • 举报
回复
大变量定义长度
xinpingf 2004-03-26
  • 打赏
  • 举报
回复
yongganzhe(fsf)
你的贴子里给你回复了
starwang 2004-03-26
  • 打赏
  • 举报
回复
变量类型定义的太小了!
wuyaxlz 2004-03-26
  • 打赏
  • 举报
回复
up
chanet 2004-03-25
  • 打赏
  • 举报
回复
位数不够
welyngj 2004-03-25
  • 打赏
  • 举报
回复
楼主跑了?
welyngj 2004-03-25
  • 打赏
  • 举报
回复
支持以上的说法,可以楼主跑哪里去了?
qfsb_p 2004-03-25
  • 打赏
  • 举报
回复
增大变量定义长度咯

good lucky
baojianjun 2004-03-25
  • 打赏
  • 举报
回复
你的錯誤代碼貼出來大家看看,
問題是出在變量或字段的定義上
xinpingf 2004-03-25
  • 打赏
  • 举报
回复
估计是用char造成的
beckhambobo 2004-03-25
  • 打赏
  • 举报
回复
declare
mymaxid char;

不是吧,范围也不给就定义,呵呵
jiezhi 2004-03-25
  • 打赏
  • 举报
回复
讲变量的定义长度加大。
ATCG 2004-03-25
  • 打赏
  • 举报
回复
这个错一般就是变量定义不够长,写多自然就知道了.
wanas 2004-03-25
  • 打赏
  • 举报
回复
char !!
本来的代码是8位的,结果不知谁给改了,我跟了十几遍代码,
晕~~~早上3点才回去。
秋日阳光 2004-03-25
  • 打赏
  • 举报
回复
我也有同样的问题:
我得temp表结构如下:字段名 类型 大小
tempid varchar2 15
tempname varachar2 10
templevel number 2

我建立一个存储过程:
功能:根据用户输入的tempid号和templevel,找出temp表中相匹配的最大tempid.
create or replace procedure mytemp
( mylevel in number,
myid in char,
maxid out char
)
as
begin
select max(tempid) into maxid from temp where tempid like myid||'%' and templevel=mylevel;
end mytemp;
建立完改存储过程后,我在sql*plus中调用该存储过程:
declare
mymaxid char;
begin
mytemp(2,'100',mymaxid);
end;
程序报错为:PL/SQL: 数字或值错误 : 字符串缓冲区太小
我想是不是我得temp表里tempid的字段类型是varchar2(15),而存储过程中用的是char类型的原因,但是如果我把存储过程改为:
create or replace procedure mytemp
( mylevel in number,
myid in varchar2(15),
maxid out varchar2(15)
)
as
begin
select max(tempid) into maxid from temp where tempid like myid||'%' and templevel=mylevel;
end mytemp;
系统又报错为:有编译错误.
问题2:varchar2类型的字段能不能用max()函数?
百思不得其解,望各位大虾指点

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧