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。

  • 相关阅读:
    mysql alter table时的表锁是mysql服务层加的还是存储引擎加的
    show databases in redis
    Docker-compose中的使用技巧
    debian切换源
    C# MVC(File)控件多张图片上传加预览
    C# DateTime日期格式化
    DropDownList的使用,RadioButtonList的使用
    access数据库连接问题
    动态获取ul,li的数据
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/iowoi/p/14296445.html
Copyright © 2011-2022 走看看