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. ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 错误分析

    目录(?)[+] 1. 问题起因 最近在进行Oracle的一些操作时,总会遇到这个错误:  ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小,错误如下: ORA-00604: ...

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

    场景: .Net程序调用Oracle方法 command.ExecuteNonQuery()执行存储过程;弹出如标题异常信息. 存储过程有4个输入参数,一个输出参数.一旦执行到给输出参数赋值的时候就报 ...

  3. wm_concat结果长度限制的有关问题 ORA-06502: PL/SQL: 数字或值错误

    该函数作用是把列值合并(用英文逗号分割),但是数量有限制,返回的字符数上线是4000(oracle11g),超过会报错,听说oracle版本到 11.2.0.2.0 或以上返回的是clob类型,长度就 ...

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

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

  5. 使用CLOB抛出数字或值错误异常

    今天在调试某个问题的时候,由于使用了很多循环,我需要都打印出来,试图使用clob整体处理之后再打印. 最后抛出此异常:数字或值错误. 网友解释如下: $ oerr ora 650206502, 000 ...

  6. SQL Server 2008 R2评估期已过的解决办法

    SQL Server 2008 R2评估期已过的解决办法   发现问题 北美产品测试服每日随机任务没有刷新 每日随机任务是使用数据库作业定期执行操作,重置玩家随机任务项 排查问题  www.2cto. ...

  7. 查看PL/SQL编译时的错误信息

    编译无效对象是DBA与数据库开发人员常见的工作之一.对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法. 一.当前数据库版本信息及无效对象 1.查看当前数据库版本 [sql] view pl ...

  8. PL/SQL客户端连Oracle很快就断开问题的解决

    PL/SQL登录很短时间session就自动断开 1.首先查看你这个用户的profile文件 select profile from dba_users where username='USERNAM ...

  9. PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决

    环境 Oracle 11.2.0 + SQL Plus 问题 根据以下要求编写函数:将scott.emp表中工资低于平均工资的职工工资加上200,并返回修改了工资的总人数.PL/SQL中有更新的操作, ...

随机推荐

  1. java基础69 JavaScript产生伪验证码(网页知识)

    1.伪验证码 <!doctype html> //软件版本:DW2018版 <html> <head> <meta charset="utf-8&q ...

  2. No.16 selenium学习之路之异常处理

    一.常见的几种异常: SyntaxError:语法错误 NameError:试图访问的变量名不存在 IndexError:索引错误,使用的索引不存在,超出序列范围 KeyError:使用了不存在的关键 ...

  3. jupyter(ipython notebook) 安装和入门教程

    近期大家无论是自己做数据分析还是紧急答辩做PPT,可能都需要画一些数据的展示图:以前大家都是用excel画图,但excel画图存在一定的局限性,比如你要画个累积直方图,excel就很麻烦了,所以给大家 ...

  4. 关闭linux退格键和vi发出的嘟嘟声

    以root用户登录,然后请安下面方法进行操作: 在命令行下执行:echo "rmmod pcspkr" >> /etc/rc.d/rc.local

  5. java遍历ftp文件夹下所有文件(或指定文件下的文件)

    import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import org.apach ...

  6. RabbitMQ系列之高可用集群

    为了实现高可用,我采用LVS+双节点RabbitMq , 架构图如下: 在RabbitMQ之前放了LVS, LVS 采用 rr 轮询算法 , 目的是将请求平均分配到两个真实节点,并配置5672端口监控 ...

  7. 【PAT】1017 A除以B(20 分)

    1017 A除以B(20 分) 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一 ...

  8. 操作系统基础梳理--进程&线程

    1.举个栗子 1.1.知乎一形象例子 [摘自知乎]比如说十几年前,马化腾在写QQ,假设他那个时候不懂多进程多线程.然后他就开始写啦,这玩意儿不简单吗,不就是用户输入什么,把信息打包发到另一个用户,再显 ...

  9. 跟我一起学WPF(0):初识WPF

    WPF是什么 WPF是微软的新一代图形引擎系统,全称为Windows Presentation Foundation,从.NET3.0版本开始引入,为用户界面.2D/3D 图形.文档和媒体提供了统一的 ...

  10. LoadRunner中文乱码问题解决方法

    LoadRunner中文乱码问题解决方法 前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题.在此记录一下中文乱码问题的解决办法. 一.录制回放中文乱码 我录制登陆的脚本, ...