zoukankan      html  css  js  c++  java
  • Oracle function函数中无法使用update更新

    CREATE OR REPLACE FUNCTION changePY 
      RETURN VARCHAR2
    as
    PRAGMA AUTONOMOUS_TRANSACTION;  --as 或者 is 后边 加上这句  PRAGMA AUTONOMOUS_TRANSACTION “自治事务”
      v_length INT := 0;
      T_ICD10VALUE  varchar2(1000);
      T_ICD10code  varchar2(1000);
      T_ICDTYPE  varchar2(1000);
      T_ICDBM  varchar2(1000);
      T_ICDSAU  varchar2(1000);
      T_ICDOLDCODE  varchar2(1000);
      T_ICDOLDVALUE  varchar2(0100);
      T_REMARK  varchar2(1000);
      T_PYM  varchar2(1000);
      T_PYMA  varchar2(1000);
          CURSOR DataTable IS select * from  icd10v2;
       begin
       select count(*) into v_length  from icd10v2;
       open DataTable;
       loop
         FETCH  DataTable into T_ICD10code, T_ICD10VALUE, T_ICDTYPE, T_ICDBM, T_ICDSAU,T_ICDOLDCODE, T_ICDOLDVALUE, T_REMARK, T_PYM;
          exit when DataTable%notfound;   
            T_PYMA:=fn_getpy(T_ICD10VALUE,4) ;
            update icd10v2 set PYM=T_PYMA  where ICD10CODE=T_ICD10code and  ICD10VALUE=T_ICD10VALUE;
            COMMIT; -- 在更新语句执行之后提交
      end loop;
      CLOSE DataTable;
      return '更新成功';  
    end changePY;

     无法在查询中执行 DML 操作。

    自治事务的特点

    第一,这段程序不依赖于原有Main程序,比如Main程序中有未提交的数据,那么在自治事务中是查找不到的。

    第二,在自治事务中,commit或者rollback只会提交或回滚当前自治事务中的DML,不会影响到Main程序中的DML。

  • 相关阅读:
    《自己动手写操作系统》:开发环境配置心得
    sip.conf配置详情
    MySQL字符串中数字排序的问题
    Asterisk iax错误提示
    Python 快速入门
    C# winfrom 导出word
    SetWindowsHookEx函数参数详解
    Ubuntu Linux系统下轻松架设nginx+php服务器应用
    TShockwaveFlash的使用
    检讨
  • 原文地址:https://www.cnblogs.com/iowoi/p/14296445.html
Copyright © 2011-2022 走看看