重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
PL/SQL中为我们提供了【调试存储过程】的功能,可以帮助你完成存储过程的预编译与测试。
黄冈网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
点击要调试的存储过程,右键选择TEST
如果需要查看变量,当然调试都需要。在右键菜单中选择Add debug information.
start debugger(F9)开始我们的测试,Run(Ctrl+R)
随时在varible List中输入我们想查看的变量
其它:
Step into(Ctrl+N):单步调试,进入下一步
Step over(Ctrl+O):结束该语句
Step out(Ctrl+T):跳出该过程
Run to next exception:进入下一个断点Breakpoint
Toggle Breakpoint设置断点:光标指向一行,Ctrl+B;或鼠标点中该行的行号边缘
======================================
1.在要调试的过程上单击 test ,如下图所示:
2.出现如下界面时单击最左上方的按钮,如下图所示:
3.单击后呈现如下画面:
其中:表示要停止test;表示要全部运行完这个过程。单击它后你就不能单步调试了。
单步调试。单击它后可以像在exlipse或者visal stidio里面一样对程序进行单步调试了。
4.单击“单步调试”按钮。出现如下画面:
这个时候表示你进入了调试状态,你可以单击上面说的任何按钮来控制程序,如下:
表示要停止test,不再调试了;表示要全部运行完这个过程,不再进行单步调试了。
单步调试,表示要一步一步的调试这个程序要想单步调试这个程序,只需要你用鼠标左键连续单击这个按钮即可。
5.断点的使用。
可以使用断点,方法是在文本区域最左侧的边框进行左键单击,如下:
这个时候单击:这个按钮,就可以直接运行到这个位置了,示意图如下:
这个时候再单击,进行一步步的调试。
注意:当你忘记了设置断点,而进入一个非常大的循环时,没有关系,你可以打开这个过程在相应处设置断点,然后单击就可以了。步骤如下:
a.忘了设断点了,但是我进入了非常大的循环单步调试很难退出时:这个时候需要打开这个过程,如下:
b.你需要设置断点的地方左键单击即可,如下图:
c.单击就直接运行到你设置的这个断点的地方了。
5.对监控窗口的使用:
这个窗口可以把你要监视的变量进行显示,你把你需要监视的变量复制到这个窗口就可以了。这个窗口在调试界面的最下方,如下示:
这个sql_str 就是要被监视的对象。
6.继续单步调试:可以看到,这个变量被赋值了。如下图所示:
把它复制出来,在新建的slq window里运行,就可以看到执行结果了。如下图所示:
7.分析每一步的执行结果。
8.继续单步运行,继续分析,直到知道为什么没有产生想要的结果为止。
SQL和PL/SQL中Savepoint一事务范围内中间标志经常用于将一个长事务划分为小部分保留点Savepoint可标志长事务中任何点允许可回滚该点之后操作解决源代码中经常解决Savepoint;例如一过程包含几个函数每个函数前可建立一个保留点如果函数失败很容易返回到每一个函数开始情况回滚到一个Savepoint之后该Savepoint之后所获得数据封锁被释放为了处理方案部分回滚可以用带TO Savepoint子句ROLLBACK语句将事务回滚到指定位置
例
BEGIN
INSERT INTO ATM_LOG(whowhenwhatwhere)
VALUES ('Kiesha'SYSDATE'Withdrawal of $100''ATM54')
SAVEPOINT ATM_LOGGED;
UPDATE checking
SET balance=balance-100
RETURN balance INTO new_balance;
IF new_balance0
THEN
ROLLBACK TO ATM_LOGGED;
COMMIT
RAISE insufficient_funda;
END IF
END
关键字SAVEPOINT可选所以下面两个语句等价:
ROLLBACK TO ATM_LOGGED;
ROLLBACK TO SAVEPOINT ATM_LOGGED;
plsql--打开你的过程--菜单栏的DEBUG--添加断点---点击过程文本框的左侧,设置断点--右键点击你的过程--点击测试---F9
可能是你在之后点了提交,提交之后保存点就不存在了!我也遇到过
用户在事务(transaction)内可以声明(declare)被称为保存点(savepoint)
的标记。保存点将一个大事务划分为较小的片断。
用户可以使用保存点(savepoint)在事务(transaction)内的任意位置作标
记。之后用户在对事务进行回滚操作(rolling back)时,就可以选择从当前
执行位置回滚到事务内的任意一个保存点。例如用户可以在一系列复杂的更
新(update)操作之间插入保存点,如果执行过程中一个语句出现错误,用
户 可以回滚到错误之前的某个保存点,而不必重新提交所有的语句。
在开发应用程序时也同样可以使用保存点(savepoint)。如果一个过程
(procedure)内包含多个函数(function),用户可以在每个函数的开始位置
创建一个保存点。当一个函数失败时, 就很容易将数据恢复到函数执行之前
的状态,回滚(roll back)后可以修改参数重新调用函数,或执行相关的错误
处理。
当事务(transaction)被回滚(rollback)到某个保存点(savepoint)后,
Oracle将释放由被回滚语句使用的锁。其他等待被锁资源的事务就可以继续
执行。需要更新(update)被锁数据行的事务也可以继续执行。
将事务(transaction)回滚(roll back)到某个保存点(savepoint)的过程如
下:
1. Oracle 回滚指定保存点之后的语句
2. Oracle 保留指定的保存点,但其后创建的保存点都将被清除
3. Oracle 释放此保存点后获得的表级锁(table lock)与行级锁(row
lock),但之前的数据锁依然保留。
被部分回滚的事务(transaction)依然处于活动状态,可以继续执行。
一个事务(transaction)在等待其他事务的过程中,进行回滚(roll back)到
某个保存点(savepoint)的操作不会释放行级锁(row lock)。为了避免事务
因为不能获得锁而被挂起,应在执行 UPDATE 或 DELETE 操作前使用 FOR
UPDATE ... NOWAIT 语句。(以上内容讲述的是回滚保存点之前所获得的
锁。而在保存点之后获得的行级锁是会被释放的,同时保存点之后执行的
SQL 语句也会被完全回滚)。
原文地址:
首先纠正你一个错误是savepoint.
在你要设置保存点的位置写savepoint aaa;(aaa是保存点的名字)
当想回滚到aaa的时候就写rollback to aaa;