Published on InterSystems Developer Community (https://community.intersystems.com)

主页 > 第五十八章 SQL命令 %INTRANSACTION

文章
姚 鑫 · 十月 27, 2021 阅读大约需 2 分钟

第五十八章 SQL命令 %INTRANSACTION

第五十八章 SQL命令 %INTRANSACTION

显示事务状态。

大纲

%INTRANSACTION
%INTRANS

参数

无

描述

%INTRANSACTION语句设置SQLCODE以指示事务状态:
- 如果当前在事务中,则SQLCODE=0。
- 如果不在事务中,则SQLCODE=100。

事务正在进行时,%INTRANSACTION返回SQLCODE=0。此事务可以是由START TRANSACTION或SAVEPOINT发起的SQL事务。它也可以是由TSTART发起的ObjectScript事务。

事务嵌套对%INTRANSACTION没有影响。SET TRANSACTION对%INTRANSACTION没有影响。

还可以使用$TLEVEL确定事务状态。%INTRANSACTION仅指示事务是否正在进行。$TLEVEL指示事务是否正在进行以及当前的事务级别数。

示例

以下嵌入式SQL示例显示%INTRANSACTION如何设置SQLCODE:

ClassMethod %INTRANSACTION()
{
    n SQLCODE
    &sql(%INTRANSACTION)
    w "Before %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
    &sql(SET TRANSACTION %COMMITMODE EXPLICIT)
    n SQLCODE
    &sql(%INTRANSACTION)
    w "SetTran %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
    &sql(START TRANSACTION)
    n SQLCODE
    &sql(%INTRANSACTION)
    w "StartTran %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
    &sql(SAVEPOINT a)
    n SQLCODE
    &sql(%INTRANSACTION)
    w "Savepoint %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
    &sql(ROLLBACK TO SAVEPOINT a)
    n SQLCODE
    &sql(%INTRANSACTION)
    w "Rollback to Savepoint %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
    &sql(COMMIT)
    n SQLCODE
    &sql(%INTRANSACTION)
    w "After Commit %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL
}
#SQL #Caché

源 URL:https://cn.community.intersystems.com/post/%E7%AC%AC%E4%BA%94%E5%8D%81%E5%85%AB%E7%AB%A0-sql%E5%91%BD%E4%BB%A4-intransaction