精华内容
下载资源
问答
  • oracle存储过程中update不成功的一个原因
    2021-05-02 11:10:44

    今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会报错.

    如一个表 A(id,code, name, type)

    在存储过程中的更新操作的语句: update A x set x.type = 变量A where x.code = 变量B;

    变量A 和 变量B 都定义好了, 并且都成功赋值了.

    这是一个很简单的更新语句, 简单到一开始对为什么发生这样的错误不知所措. 其实出错的原因是在于 变量A 或 变量B 的定义上, 如:

    creat or replace procedure p_AA

    is

    t_type varchar2(20);

    code number(10);

    begin

    t_type := 'AA';

    code := 100

    update A x set x.type = t_type  where x.code = code;

    commit;

    end;

    执行成功, 但是update 操作没有成功, 没有报什么错误. 其实原因在于变量code跟 表A 中的字段code 的名字相同造成的. 看下面的:

    creat or replace procedure p_AA

    is

    t_type varchar2(20);

    t_code number(10);

    begin

    t_type := 'AA';

    t_code:= 100

    update A x set x.type = t_type  where x.code = t_code;

    commit;

    end;

    执行成功, update操作也成功. 所以原因在与变量的名称上面(还有一个值得注意的地方, 如果code字段是char型的, 变量的长度跟字段code的长度如果不一致, 比较会不成功,'     100' 和 '100' 是不对等的, 这也是容易犯的一个错误, 在此记录下)

    还有一个地方要注意:

    creat or replace procedure p_AA(codein number) --code作为参数, 就算跟表A 的字段名称一样, 也不会有影响

    is

    t_type varchar2(20);

    begin

    t_type := 'AA';

    update A x set x.type = t_type  where x.code = code;

    commit;

    end;

    执行 execute p_AA(100) 成功, 更新操作也成功. code如果是参数, 跟表A 的字段名称一样, 也不会有影响.

    我一般变量都会加t_ 或 p_, 所以以前没遇到这个问题, 为了防止以后可能再次遇到这个问题和也遇到这个问题的朋友, 在此留下这篇博客作为备忘.

    更多相关内容
  • 1、功能:存储过程中for循环调用存储过程 2、场景:跑历史数据 create or replace procedure sp_loop_run is Cursor datekeey is select to_number(to_char(datekeey,'yyyyMMdd')) datekeey from (select date'2021...

    1、功能:存储过程中for循环调用存储过程
    2、场景:跑历史数据

    create or replace procedure sp_loop_run is
    Cursor datekeey is
    select to_number(to_char(datekeey,'yyyyMMdd')) datekeey
    from (select
            date'2021-01-01' + (rownum - 1)  datekeey
          from  dual connect by rownum <= (date'2021-06-30' - date'2021-01-01' + 1))
          order by datekeey; --从xx到xx遍历日期
    i number;
    begin
    for i in datekeey LOOP
      begin
        sp_pub_fund_quo_adj(i.datekeey); --调用存储过程
      end;
    end LOOP;
    commit;
    end sp_loop_run;
    
    展开全文
  • 本文讲述如何在Oracle通过任务和管道的应用,异步调用存储过程的方法。并且介绍了其基本原理和具体实现测试。
  • oracle定时执行存储过程

    千次阅读 2019-11-21 22:41:18
    需求 每小时进行一次查询统计数据,并将数据插入...创建存储过程 create or replace procedure summary_data as v_dcppv number; v_jd12h number; v_dby number; v_xby number; v_bj number; v_bn number; v...

    需求

    每小时进行一次查询统计数据,并将数据插入到自定义的表当中

    效果

    创建存储过程

    create or replace procedure summary_data as
      v_dcppv number;
      v_jd12h number;
      v_dby   number;
      v_xby   number;
      v_bj    number;
      v_bn    number;
      v_zdzf  number;
      v_wxzf  number;
      v_jfzf  number;
      v_yhdj  number;
      v_dgzs  number;
      v_tds   number;
      v_tds2  number;
    begin
      --单次
      select count(1)
        into v_dcppv
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and order_type in (0, 1)
         and order_time IN (48, 30)
         and a.user_id like '116%';
      --酒店
      select count(1)
        into v_jd12h
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and order_type in (0)
         and order_time IN (12)
         and a.user_id like '116%';
      --单包月
      select count(1)
        into v_dby
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and order_type in (2)
         and order_time IN (1)
         and a.paytype <> '0'
         and a.user_id like '116%';
      --续包月
      select count(1)
        into v_xby
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and order_type in (2)
         and order_time IN (0)
         and a.user_id like '116%';
    
      --包季
      select count(1)
        into v_bj
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and order_type in (2)
         and order_time IN (3)
         and a.user_id like '116%';
    
      --包年
      select count(1)
        into v_bn
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and order_type in (2)
         and order_time IN (12)
         and a.user_id like '116%';
    
      --账单支付13
      select count(1)
        into v_zdzf
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and a.paytype = '1'
         and a.user_id like '116%';
    
      --微信支付7
      select count(1)
        into v_wxzf
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and a.paytype = '3'
         and a.user_id like '116%';
    
      --积分支付1
      select count(1)
        into v_jfzf
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and a.paytype = '2'
         and a.user_id like '116%';
    
      --一户多机2
      select count(1)
        into v_yhdj
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and a.paytype = '0'
         and a.user_id like '116%';
    
      --订购总数23
      select count(1)
        into v_dgzs
        from iptvsp_wt_req a
       where servicecode = 'JK0008'
         and a.instime between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and orderstatus = 1
         and a.paytype <> '0008'
         and a.user_id like '116%';
    
      --退订数7
      --6
      select count(1)
        into v_tds
        from iptvsp_order a
       where a.end_date between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and a.order_state = '0002'
         and a.user_id like '116%'
         and a.pic_type <> '0008'
       order by a.start_date desc;
      --1
      select count(1)
        into v_tds2
        from iptvsp_order_his a
       where a.end_date between trunc(sysdate, 'hh') - 1 / 24 and
             trunc(sysdate, 'hh') - 1 / 86400
         and a.order_state = '0002'
         and a.user_id like '116%'
         and a.pic_type <> '0008'
       order by a.start_date desc;
    
      dbms_output.put_line('单次PPV:' || v_dcppv);
      dbms_output.put_line('酒店:' || v_jd12h);
      dbms_output.put_line('单包月:' || v_dby);
      dbms_output.put_line('续包月:' || v_xby);
      dbms_output.put_line('包季:' || v_bj);
      dbms_output.put_line('包年:' || v_bn);
      dbms_output.put_line('账单支付:' || v_zdzf);
      dbms_output.put_line('微信支付:' || v_wxzf);
      dbms_output.put_line('积分支付:' || v_jfzf);
      dbms_output.put_line('一户多机:' || v_yhdj);
      dbms_output.put_line('订购总数:' || v_dgzs);
      dbms_output.put_line('当前退订数:' || v_tds);
      dbms_output.put_line('历史退订数:' || v_tds2);
      v_tds := v_tds   v_tds2;
      dbms_output.put_line('退订数总数:' || v_tds);
      --  dbms_output.put_line('退订数:' || v_tds v_tds2);
    
      insert into tmp_slb2
        (start_date,
         end_date,
         dcppv,
         jd12h,
         dby,
         xby,
         bj,
         bn,
         zdzf,
         wxzf,
         jfzf,
         yhdj,
         dgzs,
         tds)
      values
        (trunc(sysdate, 'hh') - 1 / 24,
         trunc(sysdate, 'hh') - 1 / 86400,
         v_dcppv,
         v_jd12h,
         v_dby,
         v_xby,
         v_bj,
         v_bn,
         v_zdzf,
         v_wxzf,
         v_jfzf,
         v_yhdj,
         v_dgzs,
         v_tds);
    
        commit;
    
    end;
    

    执行存储过程

    SQL>  set serveroutput on
    SQL> exec summary_data;

    创建自定义表

    将存储过程执行的查询数据插入到自定义表中

    -- Create table
    create table TMP_SLB2(start_date date,
                          end_date date,
                          dcppv number(8),
                          jd12h number(8),
                          dby number(8),
                          xby number(8),
                          bj number(8),
                          bn number(8),
                          zdzf number(8),
                          wxzf number(8),
                          jfzf number(8),
                          yhdj number(8),
                          dgzs number(8),
                          tds number(8)
                          
                          ) tablespace IPTVDB pctfree 10 initrans 1 maxtrans 255 storage(initial 192K next 8K
                                                                                         minextents 1
                                                                                         maxextents
                                                                                         unlimited);
    -- Add comments to the columns 
    comment on column TMP_SLB2.start_date is '开始时间';
    comment on column TMP_SLB2.end_date is '截止时间';
    comment on column TMP_SLB2.dcppv is '单次ppv';
    comment on column TMP_SLB2.jd12h is '酒店12h';
    comment on column TMP_SLB2.dby is '单包月';
    comment on column TMP_SLB2.xby is '续包月';
    comment on column TMP_SLB2.bj is '包季';
    comment on column TMP_SLB2.bn is '包年';
    comment on column TMP_SLB2.zdzf is '账单支付';
    comment on column TMP_SLB2.wxzf is '微信支付';
    comment on column TMP_SLB2.jfzf is '积分支付';
    comment on column TMP_SLB2.yhdj is '一户多机';
    comment on column TMP_SLB2.dgzs is '订购总数';
    comment on column TMP_SLB2.tds is '退订数';

    创建定时任务

    定时任务每小时执行一次存储过程

    declare
      summary_data_job number;
    begin
      dbms_job.submit(summary_data_job, 'summary_data;', sysdate, 'sysdate   1/24');
    end;

    任务的4个参数

    字段
    描述
    summarydatajob任务名字,没啥卵用,会自动生成job ID
    summary_data
    任务执行存储过程的名字
    sysdate
    任务执行的开始时间
    sysdate 1/24
    任务重复执行的时间间隔,每小时执行一次

    运行任务

    先查看任务ID,再运行对应的任务

    select * from user_jobs;
    begin 
      dbms_job.run(43);
    end;  

    参考

    oracle系统包——dbms_job用法(oracle定时任务)

    oracle设置定时执行存储过程

    Oracle trunc()函数的用法

    获取当天时间的最开始的时间和最结尾的时间

    oracle 中的trunc()函数及加一个月,一天,一小时,一分钟,一秒钟方法

    本文由博客一文多发平台 OpenWrite 发布!

    展开全文
  • Oracle11gR2 并行执行存储过程

    千次阅读 2019-06-19 18:14:59
    现在我们有3个存储过程,分别是p1,p2,p3 如果按下列方式执行 begin p1; p2; p3; end; 它们是串行的。 我们可以使用DBMS_SCHEDULER包来间接实现并行执行,具体用法如下: begin dbms_scheduler.create_job...

    现在我们有3个存储过程,分别是p1,p2,p3

    如果按下列方式执行

    begin
        p1;
        p2;
        p3;
    end;

    它们是串行的。

    我们可以使用DBMS_SCHEDULER包来间接实现并行执行,具体用法如下:

    begin
      dbms_scheduler.create_job(job_name   => dbms_scheduler.generate_job_name,
                                job_type   => 'PLSQL_BLOCK',
                                job_action => 'begin p1; end;',
                                start_date => sysdate,
                                enabled    => true,
                                comments   => 'temporary job,will be delete soon after complete!',
                                auto_drop  => true
                                );
      dbms_scheduler.create_job(job_name   => dbms_scheduler.generate_job_name,
                                job_type   => 'PLSQL_BLOCK',
                                job_action => 'begin p2; end;',
                                start_date => sysdate,
                                enabled    => true,
                                comments   => 'temporary job,will be delete soon after complete!',
                                auto_drop  => true
                                );                            
      dbms_scheduler.create_job(job_name   => dbms_scheduler.generate_job_name,
                                job_type   => 'PLSQL_BLOCK',
                                job_action => 'begin p3; end;',
                                start_date => sysdate,
                                enabled    => true,
                                comments   => 'temporary job,will be delete soon after complete!',
                                auto_drop  => true
                                );
    end;

    使用create_job来创建并立即执行一个job,执行完之后系统会自动删除。其中:

    dbms_scheduler.generate_job_name 用来创建一个job_name,默认是JOB$_加上一个递增的数字,形如 JOB$_7983

    start_time => sysdate 表示立即执行(需要同时将enabled设置为true)

    enabled => true 只有这样才会立即执行

    auto_drop => true 表示执行完自动删除

    由于我们没有指定任何重复执行的参数,所以job创建后,它的SCHEDULE_TYPE=ONCE,而不是一般的CALENDAR。

    可以通过

    select * from user_scheduler_jobs;

    查看。

    在我的工作中遇到这么一个实际需求,伪代码如下:
     

    begin
    for rows in (select COL1 from tab) loop
        业务逻辑处理;
    end loop;
    end;

    处理逻辑部分比较简单,但是循环次数比较多,所以考虑将数据分片执行。

    begin
      for rows in (select col1
                     from (select mod(rownum, v_parallel_degree) + 1 part,
                                  --part要加1,因为是取余
                                  col1
                             from (select col1 from tab order by col2))
                    where part = v_part) loop
      end loop;
    end;
    
    其中:
     v_parallel_degree:分片的数量
     v_part:用来取第x分片

    将以上代码放到存储过程中,两个入参:v_parallel_degree,v_part

    最后使用一个存储过程来调用

    --***************************创建一个工具包用来创建job***************************
    
    create or replace package pkg_utils is
    
      procedure exec_pkg(v_pkg_name in varchar2);
    
      --并行执行存储过程
      procedure exec_proc_parallel(v_procedure_name  in varchar2,
                                   v_parallel_degree in int);
    
    end pkg_utils;
    
    /
    create or replace package body pkg_utils is
    
      --并行执行存储过程
      procedure exec_proc_parallel(v_procedure_name  in varchar2,
                                   v_parallel_degree in int) is
      
      begin
        for i in 1 .. v_parallel_degree loop
          dbms_scheduler.create_job(job_name   => dbms_scheduler.generate_job_name,
                                    job_type   => 'PLSQL_BLOCK',
                                    job_action => 'begin ' || v_procedure_name || '(' ||
                                                  v_parallel_degree || ',' || i ||
                                                  '); end;',
                                    start_date => sysdate,
                                    enabled    => true,
                                    comments   => v_procedure_name || '(' || i ||
                                                  ' of ' || v_parallel_degree || ')',
                                    auto_drop  => true);
        end loop;
      end exec_proc_parallel;
    
    begin
      -- initialization
      null;
    end pkg_utils;
    /
    
    --***************************调用实例***************************
    begin
      pkg_utils.exec_proc_parallel('PROCEDURE_NAME', 16);
    end;
    /

     

    展开全文
  • Oracle--存储过程概述、创建和执行

    千次阅读 2020-01-04 18:27:25
    存储过程是一种命名PL/SQL程序块,它将一些相关的SQL语句、流程控制语句组合在一起,用于执行某些特定的操作或者任务,可以将经常需要执行的特定的操作写成过程。通过过程名,就可以多次调用过程,从而实现程序的...
  • oracle执行存储过程调用http请求

    千次阅读 2020-09-22 16:54:49
    技术难点:公司代码封闭 无法改动 能改动的只有存储过程 公司说没办法调用其他的服务 导致操作完系统没办法做消息推送给其他公司 我在网上看到有oracle调用http请求的文章 所以自己实践一下 查看到百度很多的博客都...
  • 在我们写好一个按日期统计数据的存储过程后,多天的数据我们该怎么去调用存储过程呢?常用的一种方法就是再写一个存储过程,该过程的参数为起始日期和终止日期两个,然后起始日期累加,直到终止日期。具体如下: ...
  • ORACLE存储过程

    千次阅读 2021-10-27 16:17:40
    本文是基于oracle编写的存储过程,以下所说的存储过程均为oracle中的存储过程,以及下面所说的存过都是存储过程的简称 一、存储过程的创建 创建存储过程的方式两种,一种是基于PLSQL创建,一种是ORACLE语法创建 ...
  • 最近在使用存储过程处理大批量数据,里面用到了游标,在进行测试的时候报错“ORA-20000:ORU-10027:BUFFER OVERFLOW, LIMIT OF 10000 BYTES”。 从网上查询是数据量太多了,用DBMS_OUTPUT.ENABLE(BUFFER=>NULL)可以...
  • oracle job 查询 存储过程

    千次阅读 2021-01-27 02:32:06
    Oracle开发与使用文章收藏收集一些Oracle开发与使用文章,以便于后续查找.【基础类】1.ORACLE函数大全2.Orace常用函数3.oracle 日期函数介绍4.Oracle中常用的to_Char用法详解(有FMT的详细列表)5.ORACLE中日期和时间...
  • 当前位置:我的异常网» Oracle开发»关于存储过程并发处理解决方案关于存储过程并发处理解决方案www.myexceptions.net网友分享于:2013-01-05浏览:116次关于存储过程并发处理想测试一下存储过程处理过程中,另一个...
  • 存储过程用于完成特定功能的SQL语句集合,编译完后存储在数据库中,不同的程序在执行同一个SQL的时候可以直接调用存储过程无需重新写sql语句。 优点: 模块化程序、需只要调用无需传输SQL,加快SQL执行速度,提高安全...
  • oracle存储过程常用的技巧(详)

    千次阅读 2021-05-06 06:06:12
    存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集合的选择等等1.存储过程结构1.1 第一个存储过程create or ...
  • Oracle/PLSQL存储过程详解

    万次阅读 多人点赞 2018-03-14 17:31:55
    如果新建毫无反应直接文件-新建-程序窗口-空白,新建一个程序窗口: 存储过程创建语法: create [or replace] procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值...
  • oracle存储过程详解

    万次阅读 多人点赞 2018-05-15 13:45:54
    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。Ø 存储过程的概念 ...
  • SQL命令查询Oracle存储过程信息(代码内容等)SELECT * from ALL_SOURCEwhere TYPE='PROCEDURE' AND TEXT LIKE'%0997500%';--查询ALL_SOURCE中,(脚本代码)内容与0997500模糊匹配的类型为PROCEDURE(存储过程)的信息。...
  • Oracle存储过程常见问题及解决方法

    千次阅读 2019-01-08 14:34:38
    Oracle存储过程   &amp;nbsp;&amp;nbsp;&amp;nbsp;存储过程是为完成特定功能的SQL集,。目前工作中用到的存储过程就是对数据库中的字段进行批量的更新。  最近在写存储过程中遇到了一些问题,查阅...
  • JDBC调用Oracle存储过程详解

    千次阅读 2019-04-19 22:16:25
    一、为什么要调用存储过程 1、概述 存储过程说白了就是一堆 SQL 的合并,中间加了点逻辑控制,但是存储过程处理比较复杂的业务时比较实用。...存储过程只在创造时进行编译,以后每次执行存储过程都不需再重...
  • oracle存储过程与函数的区别 2017年08月15日 22:49:38 冷月葬花魂iiii 阅读数:7800更多 个人分类: oracle 定义: 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库...
  • oracle调用带有out参数的存储过程

    千次阅读 2021-06-03 11:51:01
    当我们在oracle中写完一个存储过程,我们通常需要使用测试调用存储过程,调用测试之后,然后提交执行结果,就可以去数据库中执行sql,查看我们的存储过程执行的数据是否符合预期效果。 实际测试中,我们可能不希望...
  • Oracle存储过程基本写法

    千次阅读 2020-03-17 10:10:51
    1.1,Oracle存储过程简介:  1.2,创建存储过程的语法: 2.0,游标的使用,看到的一段解释很好的概念,如下: 1.1,Oracle存储过程简介:   存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合...
  • 1、定义所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该...2、存储过程的创建Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。(1)无参存储过程语法?12345678cr...
  • 查询结果: 提问者:aidisoft 提问时间:2018年07月04日 热度:7℃ table: student name age 小一 14 小可 12 小二 17 小萨 18 写一个存储...declare type typ_rec is record of (student.name%type, student.age%...
  • 存储过程中如果使用了参数,在执行存储过程时必须为其指定参数。总的来说,参数可以是常量、变量和表达式等。 Oracle有三种参数模式: IN OUT IN OUT IN参数 该类参数值由调用者传入,并且只能够被存储过程读取。...
  • 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。在大型数据库系统中,...
  • 摘要:本文通过实验和事件跟踪来分析Oracle Job执行过程中修改下次执行时间的机制。有些人问,Oracle的JOB在设定完next_date和interval之后,到底是什么时候决定下一次运行时间的。可以归纳成以下几个问题。1.假设...
  • Oracle创建INSERT存储过程并调用

    千次阅读 2018-12-19 23:34:06
    初学数据库,对存储过程一头雾水,上午学习创建简单的数据表,由于运维需要用到数据库存储,之前生产数据库定时存储过程一直失效,于是想自己写一个存储过程,测试下定时存储任务,后续打算用crontab来定时调用存储...
  • Oracle存储过程详解(一)

    万次阅读 多人点赞 2016-04-20 09:38:49
    存储过程创建语法: create [or replace] procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值范围); Begin Select count(*) into 变量1 from 表A where列名=param...
  • WHEN OTHERS THEN v_ErrorText := sqlcode|| SQLERRM|| ‘存储过程[Proc_Update_ID_NO]执行失败!’; RAISE_APPLICATION_ERROR(-20003,v_ErrorText); –raise; v_OUT := v_ErrorText ; END Proc_error_process; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,029
精华内容 31,611
关键字:

oracle重复执行存储过程