`
q272156430
  • 浏览: 275745 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

oracle goto 使用

阅读更多
IF (V_COUNT > 0) THEN
       --更新ets_item_info
       UPDATE ETS_ITEM_INFO
       SET   FINANCE_PROP    = 'CTZC',
              LAST_UPDATE_DATE = SYSDATE,
              LAST_UPDATE_BY   =P_USER_ID
       WHERE  SYSTEMID = P_SYSTEMID;
       
       RETURN 1;
     ELSE
       GOTO lable;     END IF;
   

<<lable>>
    NULL;
   
    EXCEPTION   WHEN OTHERSTHEN
     BEGIN
        P_ERRMSG := SQLERRM;
        RETURN 0;
     END;

 

<<lable>> 后面不能直接跟EXCEPTION这种关键字类的语句,要用NULL把标签跟关键字隔开。类似的关键字还有ENDLOOP之类的。。。
PROCEDURE PRC_F_yaa012_yw_ht (
      prm_aae076          IN              ad04a1.aae076%TYPE,       -- 财务接口流水号
      prm_yad060          IN              ad04a1.yad060%TYPE,       -- 收付种类
      prm_yab003          IN              ad04a1.yab003%TYPE,       -- 社保经办机构
      prm_YAA012          IN              ad04a1.yaa012%TYPE,       -- 财务处理标志
      prm_AAB191          IN              ad04a1.AAB191%TYPE,       -- 实际到账日期
      prm_AAE036          IN              ad04a1.AAE036%TYPE,       -- 登账日期
      prm_AppCode         OUT             VARCHAR2,       -- 执行代码
      prm_ErrorMsg        OUT             VARCHAR2)       -- 出错信息
  IS
     --定义变量
     var_bz CHAR(1);
  BEGIN
      /*初始化变量*/
      prm_AppCode  := pkg_COMM.gn_def_OK;
      prm_ErrorMsg := '';
      var_bz := SUBSTR(prm_yad060,1,1);
      IF var_bz = 'R' THEN --居民医疗
         --调用居民医保业务表同步过程
         pkg_P_Comm.prc_P_updateFundAllocation
                              (prm_aae076       ,     --单据号
                               prm_yad060       ,     --收付种类
                               prm_yab003       ,     --社保经办机构
                               prm_yaa012       ,     --财务处理标志
                               prm_aab191       ,     --到帐时间
                               prm_AAE036       ,     --财务结算日期
                               prm_AppCode      ,     --错误代码
                               prm_ErrorMsg     );    --错误内容
         IF prm_AppCode <> pkg_COMM.gn_def_OK THEN
            GOTO label_ERROR;
         END IF;
      ELSIF var_bz = 'K' THEN --医疗待遇
         pkg_k_PaymentComm.prc_k_PaymentWriteYw
                              ( prm_aae076      ,     -- 财务接口流水号
                                prm_yad060      ,     -- 收付种类
                                prm_yab003      ,     -- 社保经办机构
                                prm_YAA012      ,     -- 财务处理标志
                                prm_AAB191      ,     -- 实际到账日期
                                prm_AAE036      ,     -- 登账日期
                                prm_AppCode      ,     -- 错误代码
                                prm_ErrorMsg     );    -- 错误内容
         IF prm_AppCode <> pkg_COMM.gn_def_OK THEN
            GOTO label_ERROR;
         END IF;
      ELSE
         prm_AppCode  := PRE_ERRCODE ||'0506';
         prm_ErrorMsg := '无法同步财务接口流水号为' || prm_aae076||'的业务表!';
         GOTO label_ERROR;
      END IF;
      /*成功处理*/
      <<label_OK>>
      /*关闭打开的游标*/
      /*给返回参数赋值*/
      prm_AppCode  := pkg_COMM.gn_def_OK ;
      prm_ErrorMsg := ''                 ;
      RETURN ;

      /*处理失败*/
      <<label_ERROR>>
      /*关闭打开的游标*/
      /*给返回参数赋值*/
      IF prm_AppCode = pkg_COMM.gn_def_OK THEN
         prm_AppCode  := PRE_ERRCODE || pkg_COMM.gn_def_ERR;
      END IF ;
      RETURN ;
  EXCEPTION
     -- WHEN NO_DATA_FOUND THEN
     -- WHEN TOO_MANY_ROWS THEN
     -- WHEN DUP_VAL_ON_INDEX THEN
     WHEN OTHERS THEN
        /*关闭打开的游标*/
        prm_AppCode  := PRE_ERRCODE || pkg_COMM.gn_def_ERR;
        prm_ErrorMsg := '数据库错误'|| SQLERRM ;
        RETURN;
  END PRC_F_yaa012_yw_ht;

 

分享到:
评论

相关推荐

    Oracle 循环

    一、Oracle 中的 GOTO 用法 在 Oracle 中,GOTO 语句用于无条件跳转到指定的标签处。例如,在以下代码中,我们使用 GOTO 语句来实现一个简单的循环: ```sql DECLARE x number; BEGIN x := 9; &lt;&lt;repeat_loop&gt;&gt; ...

    Oracle中实现continue的方法

    本文将详细介绍两种在Oracle PL/SQL中实现类似`continue`功能的方法:使用`GOTO`语句以及通过异常处理机制。 #### 方法一:使用`GOTO` 在PL/SQL中,虽然`GOTO`不是一种推荐的最佳实践,但在某些特定情况下,使用它...

    oracle 帮助文档chm格式

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其丰富的功能和强大的性能使其在企业级应用中占据了重要地位。本资源包含的是"Oracle帮助文档",以CHM(Microsoft Compiled HTML Help)格式提供,这是一种...

    asp连接oracle完整代码

    在ASP页面中,使用ADO(ActiveX Data Objects)对象来建立与Oracle数据库的连接。通常涉及的对象有Connection和Command。以下是一个基本示例: ```vbscript Dim conn Set conn = Server.CreateObject("ADODB....

    vb6连接oracle的代码(更新数据库)测试

    以下是一份详细的知识点解析,将介绍如何使用VB6与Oracle 10G建立连接,并进行数据库操作。 首先,你需要在VB6环境中引入Oracle的数据提供者——ODBC驱动程序或Oracle Data Provider for .NET (ODP.NET),以实现与...

    Oracle资料学习PL/SQL必备

    4. **流程控制**:包括IF-THEN-ELSE、CASE语句用于条件判断,WHILE和FOR循环用于迭代,以及GOTO语句(尽管不推荐使用)。 5. **游标**:游标是处理结果集的一种方式,允许程序逐行处理查询结果,常用于动态数据处理...

    oracle学习资料

    此外,PL/SQL还提供了GOTO语句,尽管在现代编程中不推荐使用,但在某些特定场景下可能有用。 异常处理是PL/SQL中一个独特且重要的特性,它允许程序员优雅地处理可能出现的错误情况。通过EXCEPTION关键字,我们可以...

    Oracle基础(Oracle体系结构+PL/SQL命令)

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和稳定性使得它在企业级应用中占据了重要地位。本文将深入探讨Oracle体系结构及其PL/SQL编程语言的基础知识。 首先,我们来了解一下Oracle的...

    VBA链接 Oracle11G

    On Error GoTo ErrorHandler ' ... 连接和查询代码 ... Exit Sub ErrorHandler: MsgBox "Error " & Err.Number & ": " & Err.Description conn.Close Set conn = Nothing End Sub ``` 6. **释放资源**:...

    Oracle 10g 系统管理员简明教程目录

    * 如何使用 SQL 语句:包括启动 SQL*Plus、使用 iSQLPlus 与 Oracle 连接、结束与 Oracle 的连接等方面的介绍。 * SELECT 语句的用法:包括简单的 SELECT 语句、WHERE 子句、查询结果的排序等方面的介绍。 * 函数的...

    精通Oracle PLSQL编程

    Oracle PLSQL编程是数据库管理与开发中的核心技术,尤其在企业级应用系统中广泛使用。PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一个过程化语言,它结合了SQL的查询功能和传统的...

    DBA对Oracle SQL编写规范的总结

    - **规范要求**:在PL/SQL中应当尽可能使用Oracle提供的内置函数,这不仅可以提高代码的性能,还能保证代码的可移植性和稳定性。 - **示例**: ```plsql SELECT TRUNC(SYSDATE) INTO v_date FROM DUAL; ``` ###...

    数据库oracle中PLSQL语句简介及使用方法的举例说明

    PL/SQL提供了一系列的流程控制语句,如IF...THEN...ELSIF...ELSE...END IF用于条件判断,WHILE循环和FOR循环用于迭代,以及GOTO语句进行跳转。 五、PL/SQL的SQL语句 PL/SQL可以直接嵌入SQL语句,如SELECT、INSERT、...

    Oracle的编程工具包1

    2. **控制流**:讲解如何使用流程控制语句来控制程序的执行流程,如GOTO、LOOP、EXIT、CONTINUE等。 3. **游标**:游标是PL/SQL中处理单行记录的方法,允许逐行处理查询结果。书籍可能会详细介绍如何声明、打开、...

    Oracle Form开发常用技巧

    适用于ORACLE EBS FORM开发深入技巧,有利于深入了解FORM开发技术。

    OraclePL-SQL.rar_ORACLE PL_oracle_oracle sql

    1. **Oracle数据库基础**:Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,提供了丰富的功能和高度的可扩展性。其核心特性包括数据存储、事务处理、安全性、并发控制等。了解Oracle数据库的基础知识,...

    oracle从入门到精通学习材料+常用函数

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它以其强大的数据处理能力和高稳定性而闻名。本套学习材料以“Oracle从入门到精通”为主题,通过精心编排的PPT形式,旨在帮助初学者逐步掌握Oracle的...

    PLSQL Oracle8i程序设计

    了解如何创建和使用索引,以及如何编写高效的SQL语句,是提升Oracle数据库性能的关键。索引可以加速查询,但过度使用也可能导致写操作变慢,因此需要合理平衡。 总之,“PLSQL Oracle8i程序设计”文档将引导初学者...

    oracle存储过程进阶

    介绍了oracle存储过程中常见的sql写法,游标(隐式,显式),触发器, CASE ... WHEN ...... ELSIF ...THEN...ELSE...END IF,记录类型变量定义和使用 ,%type定义变量,%rowtype定义变量,goto,异常。多且全

Global site tag (gtag.js) - Google Analytics