首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle goto 应用

2012-08-26 
oracle goto 使用IF (V_COUNT 0) THEN--更新ets_item_infoUPDATE ETS_ITEM_INFOSETFINANCE_PROP CTZC

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;

?

热点排行