gpt4 book ai didi

oracle - 如何回滚 Oracle PL/SQL 调试 session (SQL Developer)

转载 作者:行者123 更新时间:2023-12-02 06:45:53 24 4
gpt4 key购买 nike

当我使用 Oracle SQL Developer 中的调试器调试 PL/SQL 程序时,为什么正在完成的工作是永久性的?我希望工作最终能够回滚。

最佳答案

Oracle session 完成时的默认行为通常是执行 COMMIT。

当想在运行 PL/SQL 时在 session 中提交更改时,您还想确保您的 PL/SQL 程序本身不会:

  1. 在代码中执行 COMMIT
  2. 运行任何 DDL,例如创建或更改对象 - 这会导致隐式 COMMIT

现在,关于调试 PL/SQL 程序。

调试一些 PLSQL,我们执行它。

当您开始调试 session 时,您将看到我们用来启动程序的匿名 PL/SQL block 。

滚动到底部 -

enter image description here

取最后一行

--rollback

并删除--

现在,当我们的调试 session 运行时,结束 session 之前发生的最后一件事是回滚。

现在,让我们演示一个完整的场景。下面是一些简单的 PLSQL - 接收 EMPLOYEE_ID 并更新 EMPLOYEES 表,采用该员工的 FIRST_NAME 并将其设为大写。

create or replace procedure upper_EMP_NAME (
EMP_ID_IN in number,
EMP_NAME_OUT out varchar2
) as
new_name varchar2(50);
begin
select upper(FIRST_NAME)
into new_name
from EMPLOYEES
where EMPLOYEE_ID = EMP_ID_IN;

update employees set first_name = new_name
where EMPLOYEE_ID = EMP_ID_IN;

emp_name_out := new_name;
end upper_EMP_NAME;

注意:您可能需要禁用此表上的触发器才能运行。

现在让我们进行调试。我们将使用 EMPLOYEE_ID 101 来运行它。我们将看到局部变量的设置以及运行它时的 OUT 参数。然后我们会看到运行完成后,EMPLOYEE 101 仍然保留原来的名字。

Animated GIF demo (抱歉太大了)

关于oracle - 如何回滚 Oracle PL/SQL 调试 session (SQL Developer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com