ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小解决办法
1.今天写的存储过程在执行过程中,报如下错误。
exec PRO_T_008pro_update_add_delete(17,1,1,1,1,45.0,54.0,45.0,45.0,45.0,54.0,45.0,54.0,'生产厂家','CYB10-2',54.0,45.0,25.0,1.0,45.0,25.0,1.0,45.0,25.0,1.0,45.0,1,4545.0,0,0,0,'no');
begin PRO_T_008pro_update_add_delete(17,1,1,1,1,45.0,54.0,45.0,45.0,45.0,54.0,45.0,54.0,'生产厂家','CYB10-2',54.0,45.0,25.0,1.0,45.0,25.0,1.0,45.0,25.0,1.0,45.0,1,4545.0,0,0,0,'no'); end;
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 "SMART.PRO_T_008PRO_UPDATE_ADD_DELETE", line 168
ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在 line 2
解决办法:
存储过程中定义的变量值太小,加大它的范围即可。
p_dymbh number(38);
p_bbh number(38);
p_upbbh number(38);
原本我设置的是10
过程中定义了一个变量 a varchar2(2); -- a的长度为2
而在赋值时 a := '123123'; -- '123123'的长度为6这样就会出现你所遇到的问题,解决方法是找到变量,将其长度加大,注意:plsql中varchar2长度上限是4000
create or replace procedure PRO_T_008pro_update_add_delete(v_jbh in number,
v_jslx in number,
v_qtlx in number,
v_sfpfcl in number,
v_ccjzt in number,
v_hsl in number,
v_yy in number,
v_ty in number,
v_hy in number,
v_dym in number,
v_bg in number,
v_jklw in number,
v_scqyb in number,
v_sccj in varchar2,
v_cybxh in varchar2,
v_ygnj in number,
v_yctgnj in number,
v_yjgj in number,
v_yjgjb in number,
v_yjgcd in number,
v_ejgj in number,
v_ejgjb in number,
v_ejgcd in number,
v_sjgj in number,
v_sjgjb in number,
v_sjgcd in number,
v_mdzt in number,
v_clxs in number,
v_bzgtbh in number,
v_bzdntbh in number,
v_id in number,
v_ids in varchar2) is
p_msg varchar2(300) := 'error';
p_dymbh number(38);
p_bbh number(38);
p_upbbh number(38);
begin
If v_ids <> 'no' then
EXECUTE IMMEDIATE ' delete from
T_008_OUTPUTWELLPRODUCTION t where t.jlbh in (' ||
v_ids || ')';
commit;
p_msg := '删除成功';
elsif v_id = 0 then
--insert 动液面数据
insert into T_011_DYNAMICLIQUIDLEVEL (jbh, dym) values (v_jbh, v_dym);
select distinct w.jlbh as jlbh
into p_dymbh
from T_011_DYNAMICLIQUIDLEVEL w
where w.jbh = v_jbh;
--insert 泵信息
select distinct w.jlbh as jlbh
into p_bbh
from t_023_pump w
where w.sccj = v_sccj
and w.cybxh = v_cybxh;
insert into T_008_OUTPUTWELLPRODUCTION
(jbh,
jslx,
qtlx,
sfpfcl,
ccjzt,
hsl,
yy,
ty,
hy,
bg,
jklw,
scqyb,
ygnj,
yctgnj,
yjgj,
yjgjb,
yjgcd,
ejgj,
ejgjb,
ejgcd,
sjgj,
sjgjb,
sjgcd,
mdzt,
clxs,
bzgtbh,
bzdntbh,
dymbh,
bbh)
values
(v_jbh,
v_jslx,
v_qtlx,
v_sfpfcl,
v_ccjzt,
v_hsl,
v_yy,
v_ty,
v_hy,
v_bg,
v_jklw,
v_scqyb,
v_ygnj,
v_yctgnj,
v_yjgj,
v_yjgjb,
v_yjgcd,
v_ejgj,
v_ejgjb,
v_ejgcd,
v_sjgj,
v_sjgjb,
v_sjgcd,
v_mdzt,
v_clxs,
v_bzgtbh,
v_bzdntbh,
p_dymbh,
p_bbh);
commit;
p_msg := '添加成功';
elsif v_id > 0 then
--修改数据
update T_011_DYNAMICLIQUIDLEVEL d
set d.dym = v_dym
where d.jbh = v_jbh;
select distinct w.jlbh as jlbh
into p_upbbh
from t_023_pump w
where w.sccj = v_sccj
and w.cybxh = v_cybxh;
---------------------------------------------------
Update T_008_OUTPUTWELLPRODUCTION t
set jbh = v_jbh,
jslx = v_jslx,
qtlx = v_qtlx,
sfpfcl = v_sfpfcl,
ccjzt = v_ccjzt,
hsl = v_hsl,
yy = v_yy,
ty = v_ty,
hy = v_hy,
bg = v_bg,
jklw = v_jklw,
scqyb = v_scqyb,
ygnj = v_ygnj,
yctgnj = v_yctgnj,
yjgj = v_yjgj,
yjgjb = v_yjgjb,
yjgcd = v_yjgcd,
ejgj = v_ejgj,
ejgjb = v_ejgjb,
ejgcd = v_ejgcd,
sjgj = v_sjgj,
sjgjb = v_sjgjb,
sjgcd = v_sjgcd,
mdzt = v_mdzt,
clxs = v_clxs,
bzgtbh = v_bzgtbh,
bzdntbh = v_bzdntbh,
bbh=p_upbbh
Where t.jlbh = v_id;
commit;
p_msg := '修改成功';
end if;
dbms_output.put_line('p_msg:' || p_msg);
Exception
When Others Then
p_msg := Sqlerrm || ',' || '操作失败';
dbms_output.put_line('p_msg:' || p_msg);
end PRO_T_008pro_update_add_delete;
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小解决办法相关推荐
- 生成awr报告时报ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
生成awr报告时报错: ERROR: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSI ...
- 也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 参考文章: (1)也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符 ...
- vm_comcat报错 - 数字或值错误 : 字符串缓冲区太小
之前一直纠结怎么修改缓存,后来搜索11g wm_concat ,才知道是版本不对. 11.2.0.3版本可以将varchar2转换成clob.
- PL/SQL登录Oracle数据库提示“无监听程序”解决办法
PL/SQL登录Oracle数据库提示"ORA-12541:TNS:无监听程序" 解决办法: 1.打开Oracle Net Manager 监听下的listener主机地址改成主机 ...
- Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误
这个BUG出现会报错如下: selectto_char(max(RENEWAL_DATE)) intoM_YEAR_MONTH fromt_renewal_schedule; ORA-06502: P ...
- Oracle ORA-06502 数字或值错误
很早就想在csdn上写文章记录自己工作中遇见的坑了,给自己留个记忆,但是一直没有付诸行动,那就从今天开始吧. 在做oracel数据库插入数据库时候,有个字段是拼音的首字母助记码,需要调用oracel自 ...
- SQL Server安装总是缺少msi等文件,出现错误1612、1706等解决办法
SQL Server安装总是缺少msi等文件,出现错误1612.1706等解决办法 安装个sql server超级曲折,之前总是装不了数据库,一直显示各种缺少或者计数器失败,反反复复查了各种资料卸载重 ...
- ps安装程序检测到计算机重启过程,photoshop cs6安装过程中安装程序遇到错误:请重启计算机,解决办法...
1.关闭防火墙和杀毒软件 2.删除注册表 依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager目录,找到其中的 ...
- mysql lock wait_Mysql错误: Lock wait timeout exceeded 解决办法
一.临时解决办法: 执行mysql命令:show full processlist; 然后找出插入语句的系统id 执行mysql命令:kill id 或 首先,查看数据库的进程信息: show ful ...
最新文章
- 叛乱怎么自定义服务器,» 叛乱:沙漠风暴 服务器安装Mod教程
- matlab 斐波那契数列Fibonacci Sequence
- OpenCV使用VideoCapture和VideoWriter的实例(附完整代码)
- linux每天一小步---sed命令详解
- Hibernate教程
- python求平方根的代码_python求平方根
- c盘空间清理,无需软件
- web程序中的用户注册
- Python基本数据类型之数字
- android 五种存储方式,android数据五种存储
- 都2020年了,还在迷信啤酒与尿布!数据分析的真相是……
- PC端 宽高自适应问题
- 万能素材库_2016万能高考作文素材大全
- Git入门基础-Chivalrous-专题视频课程
- 创建一个背景色为蓝色的Pygame窗口
- solidworks导出obj模型和mtl材质
- 关于是否读博士的思考 zz
- PHP获取人民币汇率
- MyBatis框架学习笔记(1)——B站动力节点
- 如何正确地进入基于x86-64Bit Windows系统的商业软件破解领域
热门文章
- OpenGL屏幕空间环境光遮挡
- C语言实现数值积分之Simpson 1/3法则(附完整源码)
- C语言实现pid算法(附完整源码)
- C语言内存编址和寻址、内存对齐
- C语言实现哈希表(附完整源码)
- c++函数模板和类模板
- The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
- Clickhouse安装及使用/clickhouse-mysql安装
- 创建MySQL数据库中useUnicode=truecharacterEncoding=UTF-8
- SpringBoot demo初始