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: 数字或值错误 : 字符串缓冲区太小解决办法相关推荐

  1. 生成awr报告时报ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

    生成awr报告时报错: ERROR: ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小 ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSI ...

  2. 也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

    也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 参考文章: (1)也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符 ...

  3. vm_comcat报错 - 数字或值错误 : 字符串缓冲区太小

    之前一直纠结怎么修改缓存,后来搜索11g wm_concat ,才知道是版本不对. 11.2.0.3版本可以将varchar2转换成clob.

  4. PL/SQL登录Oracle数据库提示“无监听程序”解决办法

    PL/SQL登录Oracle数据库提示"ORA-12541:TNS:无监听程序" 解决办法: 1.打开Oracle Net Manager 监听下的listener主机地址改成主机 ...

  5. Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误

    这个BUG出现会报错如下: selectto_char(max(RENEWAL_DATE)) intoM_YEAR_MONTH fromt_renewal_schedule; ORA-06502: P ...

  6. Oracle ORA-06502 数字或值错误

    很早就想在csdn上写文章记录自己工作中遇见的坑了,给自己留个记忆,但是一直没有付诸行动,那就从今天开始吧. 在做oracel数据库插入数据库时候,有个字段是拼音的首字母助记码,需要调用oracel自 ...

  7. SQL Server安装总是缺少msi等文件,出现错误1612、1706等解决办法

    SQL Server安装总是缺少msi等文件,出现错误1612.1706等解决办法 安装个sql server超级曲折,之前总是装不了数据库,一直显示各种缺少或者计数器失败,反反复复查了各种资料卸载重 ...

  8. ps安装程序检测到计算机重启过程,photoshop cs6安装过程中安装程序遇到错误:请重启计算机,解决办法...

    1.关闭防火墙和杀毒软件 2.删除注册表 依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager目录,找到其中的 ...

  9. mysql lock wait_Mysql错误: Lock wait timeout exceeded 解决办法

    一.临时解决办法: 执行mysql命令:show full processlist; 然后找出插入语句的系统id 执行mysql命令:kill id 或 首先,查看数据库的进程信息: show ful ...

最新文章

  1. 叛乱怎么自定义服务器,» 叛乱:沙漠风暴 服务器安装Mod教程
  2. matlab 斐波那契数列Fibonacci Sequence
  3. OpenCV使用VideoCapture和VideoWriter的实例(附完整代码)
  4. linux每天一小步---sed命令详解
  5. Hibernate教程
  6. python求平方根的代码_python求平方根
  7. c盘空间清理,无需软件
  8. web程序中的用户注册
  9. Python基本数据类型之数字
  10. android 五种存储方式,android数据五种存储
  11. 都2020年了,还在迷信啤酒与尿布!数据分析的真相是……
  12. PC端 宽高自适应问题
  13. 万能素材库_2016万能高考作文素材大全
  14. Git入门基础-Chivalrous-专题视频课程
  15. 创建一个背景色为蓝色的Pygame窗口
  16. solidworks导出obj模型和mtl材质
  17. 关于是否读博士的思考 zz
  18. PHP获取人民币汇率
  19. MyBatis框架学习笔记(1)——B站动力节点
  20. 如何正确地进入基于x86-64Bit Windows系统的商业软件破解领域

热门文章

  1. OpenGL屏幕空间环境光遮挡
  2. C语言实现数值积分之Simpson 1/3法则(附完整源码)
  3. C语言实现pid算法(附完整源码)
  4. C语言内存编址和寻址、内存对齐
  5. C语言实现哈希表(附完整源码)
  6. c++函数模板和类模板
  7. The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
  8. Clickhouse安装及使用/clickhouse-mysql安装
  9. 创建MySQL数据库中useUnicode=truecharacterEncoding=UTF-8
  10. SpringBoot demo初始