`

函数和自治事务pragma autonomous_transaction

阅读更多
基本知识。
        有的时候,希望在select语句中使用自己定义的函数,并且这个函数除了返回特定的值之外,还执行update,insert,delete等操作。

对数据库有写操作(update,insert,delete,crate,alert,commit)的函数是无法简单的用SQL来调用的。

        如何实现?关键是pragma autonomous_transaction 
        如下例子:
       SQL> Create or replace function func_getid return int is
          2   pragma autonomous_transaction;
          3   vid int;
          4  begin
          5     select max(id) into vid from test_id;
          6     update test_id set id=id+1;
          7     commit;
          8     return vid;
          9  end;
         10  /
       
        Function created
       
        SQL> select  func_getid from dual;
       
        FUNC_GETID
        ----------
                 1
       
        SQL> select  func_getid from dual;
       
        FUNC_GETID
        ----------
                 2
分享到:
评论

相关推荐

    Oracle自治事务的介绍(Autonomous_Transactions)

    Oracle自治事务的介绍(Autonomous_Transactions)PRAGMA_AUTONOMOUS_TRANSACTION

    oracle自治事务(Trigger)

    在触发器中使用自制事务及调用存储过程 Declare Pragma Autonomous_Transaction; ...

    Oracle中怎样用自治事务保存日志表

    要创建一个自治事务,您必须在匿名块的最高层或者存储过程、函数、数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句。在这样的模块或过程中执行的SQL Server语句都是自治的。

    利用pragma data_seg实现程序只能单个实例运行

    利用pragma data_seg实现程序只能单个实例运行测试工程。已在VC 6.0环境下成功运行

    SQLite 中文帮助pdf

    PRAGMA table_info('keys');--获取表的列信息 PRAGMA database_list; 对每个打开的数据库,使用该数据库的信息调用一次回叫函数。使用包括附加的数据库名和索引名在内的参数。第一行用于主数据库,第二行用于存放...

    oracle 存储过程学习

    快速学习函数创建和练习。 创建函数、存储过程、创建过程、调用存储过程、AUTHID、PRAGMA AUTONOMOUS_TRANSACTION、开发存储过程步骤、删除过程和函数、过程与函数的比较

    #pragma用法_汇总.doc

    #pragma CODE SEG NEAR SEG NON BANKED前一段时间写函数中断时 经常要加上#pragma语句 否则 编译就会出错 有飞思卡尔的16位单片机写过中断函数的人 就会知道在中断函数前必须加上代码 #pragma CODE SEG NEAR SEG NON...

    oracle生成动态前缀且自增号码的函数分享

    代码如下:create or replace Function GetInvitationNO...– 需要使用“Current_User”的权限防止无法运行“Execute Immediate”命令 & “PRAGMA AUTONOMOUS_TRANSACTION”自制事务防止DML无法DDL的问题 Totalprev V

    #pragma_命令集合

    #pragma_命令集合 介绍pragma_命令的用法,使你不再迷茫

    pragma_comment用法

    pragma_comment用法,jian dan de jie shao.pragma_comment用法

    #pragma_命令集合.pdf

    #pragma_命令集合.pdf 不错的东西 很重要

    IAR软件的使用说明

    IAR软件的操作使用说明,非常详细,哈哈哈哈哈

    #pragma使用详解 .pdf

    #pragma使用详解 .pdf #pragma使用详解 .pdf #pragma使用详解 .pdf

    #Pragma_Pack.doc

    很详细的讲解 #Pragma_Pack的用法,作用,及效果,一目了然。

    dsp28335开发总结

    1 #pragma CODE_SECTION(InitFlash, "ramfuncs")? 众所周知,微处理器从内存RAM中取指令的速度要比从flash中取指令要快好多倍,但是RAM的缺陷限制了其不能存储用户程序代码,因为RAM掉电会丢失数据,但是其速度要快...

    Qt Sqlite加密数据库驱动源代码

    只不过对于加密数据库,需要在对数据库进行任何操作前,先执行“PRAGMA key=xxx;”。通过这种方式输入数据库密码。检验之前的密码是否正确可以在命令行中键入“.databases”,如果没有错误提示,那就是解密成功了;...

    Oracle中大批量删除数据的方法

    create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2) as pragma autonomous_transaction; n_delete number:=0; begin while 1=1 loop ...

    SQLite PRAGMA

    PRAGMA pragma_name; 要为 PRAGMA 设置一个新的值,语法如下: PRAGMA pragma_name = value; 设置模式,可以是名称或等值的整数,但返回的值将始终是一个整数。 auto_vacuum Pragma auto_vacuum Pragma 获取或...

    MFC 下获取键盘,鼠标的钩子程序

    #pragma data_seg("MySec") HWND g_hWnd=NULL; #pragma data_seg() #pragma comment(linker,"/section:MySec,RWS") /* SEGMENTS MySec READ WRITE SHARE */ #define WM_MSG WM_USER + 500 LRESULT CALLBACK ...

    解析#pragma指令

    在所有的预处理指令中,#Pragma...#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。

Global site tag (gtag.js) - Google Analytics