ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL静态SQL-事务处理和控制-set transaction语句

PLSQL Language Referenc-PL/SQL静态SQL-事务处理和控制-set transaction语句

原创 Oracle 作者: luisedalian 时间:2014-03-17 08:22:55 0 删除 编辑

set transaction语句

可以使用SET TRANSACTION语句来开始一个只读或读写事务、设置隔离级别、设置当前的事务到特定的回滚段。只读事务对于当其它用户更新相同的表时运行多个查询特别有用。

--(OE)只读事物

DECLARE

    daily_order_total    NUMBER(12,2);

    weekly_order_total   NUMBER(12,2);

    monthly_order_total  NUMBER(12,2);

BEGIN

    COMMIT; -- 结束以前的事务

    SET TRANSACTION READ ONLY NAME '计算订单总和';

 

    SELECT SUM (order_total)

    INTO daily_order_total

    FROM orders

    WHERE order_date = SYSDATE;

 

    SELECT SUM (order_total)

    INTO weekly_order_total

    FROM orders

    WHERE order_date = SYSDATE - 7;

 

    SELECT SUM (order_total)

    INTO monthly_order_total

    FROM orders

    WHERE order_date = SYSDATE - 30;

    dbms_output.put_line('Daily: ' || daily_order_total ||

                         'Weekly: ' || weekly_order_total ||

                         'Month: ' || monthly_order_total);   

 

   COMMIT; -- 结束只读事务

END;

SET TRANSACTION语句必须是只读事物的第1条SQL语句,且在事务中只允许出现一次。

如果将事务设置为只读,则后续的查询只能看到事务开始之前提交的改变。只读并不影响其它的用户和事务。

只有SELECT、FETCH、CLOSE、LOCK TABLE、COMMIT、和ROLLBACK语句允许出现在只读事务中,而且查询不能FOR UPDATE。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1122928/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6044094