建立自由性交易, 使用名为autonomous_transaction的编译指示(编译命令,如, #include), 这个编译命令要放在declare里面.
Delcare or replace procedure procedure_name(params, types)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
当程序执行的时候,pl/sql 会把autonomous_transaction当成独立存在的区域来处理.
用途是用在记录程序事件,不影响程序的进行.
一切用pl/sql 代码说话:
/* Formatted on 2006/04/27 14:05 (Formatter Plus v4.8.7) */
--test autonomous transaction
CREATE TABLE logging_infos(log_info VARCHAR2(200), log_time DATE);
COMMIT ;
/* Formatted on 2006/04/27 14:05 (Formatter Plus v4.8.7) */
--create autonomous transaction procedure
CREATE OR REPLACE PROCEDURE logging_info (
log_info_in VARCHAR2,
log_time_in DATE
)
--If your procedure's name is exit in oracle( DB) , then you cann't use it to declare a procedure with the same name
AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO logging_infos
(log_info, log_time
)
VALUES (log_info_in, log_time_in
);
COMMIT;
END;
books;
--create main procedure
CREATE OR REPLACE PROCEDURE book_insert (
isbn_in VARCHAR2,
title_in VARCHAR2,
summary_in VARCHAR2,
author_in VARCHAR2,
date_published_in DATE,
page_count_in NUMBER
)
AS
BEGIN
INSERT INTO books
(isbn, title, author, date_published,
page_count
)
VALUES (isbn_in, title_in, author_in, date_published_in,
page_count_in
);
-- call autonomous transcation
logging_info ('aaron_sys', SYSTIMESTAMP);
ROLLBACK;
--rollback for main procedure , not the autonomous transcation
EXCEPTION
WHEN OTHERS
THEN
dbms_ouput.put_line (SQLERRM);
END;
--test the main procedure
BEGIN
book_insert ('ISBN987654321',
'TEST2',
'summary:ddddd',
'Aaron',
TO_DATE ('2006-04-25', 'yyyy-mm-dd'),
88
);
END;
--successfuly completed
SELECT *
FROM books; ---doesn't have the add info
SELECT *
FROM logging_infos; --the logging info is added .
自动交易(autonomous_transaction 繁体版本的书,简体翻译成自由性交易或事前交易,还是觉得自由性交易比较好) , 一定要用commit or rollback, 如果不用的结果就是:
可以编译,但是在执行的时候会提示:
ORA-06519: active autonomous transaction detected and rolled back
ORA-06512: at "SYS.LOGGING_INFO", line 10
ORA-06512: at "SYS.BOOK_INSERT", line 15
ORA-06512: at line 2
建立自由性交易, 使用名为autonomous_transaction的编译指示(编译命令,如, #include), 这个编译命令要放在declare里面.
Delcare or replace procedure procedure_name(params, types)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
当程序执行的时候,pl/sql 会把autonomous_transaction当成独立存在的区域来处理.
用途是用在记录程序事件,不影响程序的进行.
分享到:
相关推荐
Oracle自治事务的介绍(Autonomous_Transactions) Oracle自治事务是一种特殊的数据库事务机制,允许在调用事务的上下文中执行独立的事务。这种机制使用PRAGMA_AUTONOMOUS_TRANSACTION语句来定义自治事务。自治事务...
在 Oracle 中,我们可以使用 PRAGMA AUTONOMOUS_TRANSACTION 语句来声明自治事务。 例如,在Proc_SaveBill存储过程中,我们可以使用自治事务来生成单据编号: ```sql CREATE OR REPLACE PROCEDURE Proc_SaveBill AS...
Oracle Autonomous Data Warehouse (ADW) 是Oracle云服务中的一款完全托管的数据仓库解决方案,它提供了高效、自动化的数据处理和分析能力。本操作手册将引导您完成在Oracle Cloud Infrastructure (OCI) 上搭建和...
标题中的“PDF FILES_nonlinearcontrol_Autonomous_ProgrammableLogic_Discreti”暗示了讨论的主题涉及非线性控制、自主系统、可编程逻辑控制器(PLC)以及离散化等概念。这些关键词都是信息技术与自动化领域的重要...
Arduino-ros_autonomous_car.zip,基于Arduino和Udoo/Raspberry的ROS包控制自主遥控车,使用廉价的Arduino类硬件驱动ROS驱动的自主汽车,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造...
标题“FLAIRS00-001_Autonomous_”和描述“Autonomous Automobile Behavior”涉及的主题是自动驾驶汽车的行为研究。在这个领域,我们探讨的是如何让车辆在没有人类驾驶员干预的情况下安全、有效地运行。这一技术是...
mobile robots introduction about robots
标题中的"Autonomous_Obstacle_Avoidance_Car"指的是一个自动避障汽车项目,而"Ardui"通常指的是Arduino,这是一个开源电子平台,常用于DIY电子项目和机器人制作。"SIMULINK_ardui"表明这个项目是通过Simulink进行...
/20200831/1a26f9d6ba57683bc650091bf54a94f3.zipA great deal of research effort is being expended at present to developintelligent autonomous systems. A brief overview of intelligent autonomous system ...
在PL/SQL程序块中,可以通过使用PRAGMA AUTONOMOUS_TRANSACTION命令来定义自治事务。自治事务必须遵循以下规则:如果要被定义为自治事务的程序是匿名的,则它必须是一个最外层的程序块。如果不是匿名的,则它必须是...
通过声明`Pragma Autonomous_Transaction;`,可以在触发器内创建一个独立于当前数据库会话的事务环境。这意味着在触发器内部进行的操作不会影响到触发器外的事务状态,同时外部事务的状态变化也不会影响到触发器内部...
特别是在移动机器人的运动学与动力学问题上,作者们从基础的原理出发,逐步引入了腿部移动机器人的配置及稳定性问题,以及动力学的考量。这些内容是理解移动机器人如何在真实世界中行动的关键。 本书的编辑罗纳德·...
该MATLAB程序确定用于非精确接近飞行阶段的接收机自主完整性监测(RAIM)基线标准算法(恒速率算法)和指定的输入数据集的可用性和故障标志(故障检测)。
11. **Oracle云服务**:Oracle Cloud提供了多种云数据库服务,如Autonomous Database,这可能是教程中的现代趋势内容。 这个超详细Oracle教程很可能会深入每个主题,并提供实例和练习来帮助学习者实践。此外,PDF...
要创建一个自治事务,您必须在匿名块的最高层或者存储过程、函数、数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句。在这样的模块或过程中执行的SQL Server语句都是自治的。
运动学MPC和动态增益调度状态反馈,用于控制自动驾驶汽车 该项目使您可以使用高级控制理论来解决自主制导问题。 该项目的创新部分是使用运动车辆模型的Takagi-Sugeno(TS)表示。 这使我们能够将非线性优化问题解决...
`PRAGMA AUTONOMOUS_TRANSACTION`允许存储过程中执行非事务性操作,例如查询数据库快照。 **示例**:使用`PRAGMA AUTONOMOUS_TRANSACTION`。 ```sql CREATE OR REPLACE PROCEDURE check_data IS PRAGMA AUTONOMOUS...
PRAGMA AUTONOMOUS_TRANSACTION; n_delete NUMBER := 0; BEGIN WHILE 1 = 1 LOOP EXECUTE IMMEDIATE 'DELETE FROM ' || p_TableName || ' WHERE ' || p_Condition || ' AND ROWNUM USING p_Count; IF SQL%...
2. **操作系统选择**:在“Embedded_Autonomous_LAB”中,可能使用了实时操作系统,如FreeRTOS、VxWorks或嵌入式Linux,因为它们能提供必要的稳定性和响应时间,对自主系统的实时决策至关重要。 3. **传感器与感知*...
Autonomous_Driving_With_AirSim Team Members: Cheng Liang, Shuai Hao, Xiaoyu Li, Xujia Ji, Yong Chen, Yu Luo, Yuyun Wei, Yuzheng Sun