用sqlplus命令窗口执行oracle 存储过程,关闭对话窗口后,存储过程仍然执行?

这个保存的程序给我留下了深刻的印象。
我之前在项目中也遇到过类似的场景。
当时我们在向数组插入数据时遇到了死锁问题。

说起来,这个存储过程的设计说实话还是挺有趣的。
它使用循环插入数据,但不写入任何提交。
这个细节相当关键,因为根据Oracle的默认规则,如果存储过程中没有手动提交,那么在存储过程执行完成后,所有更改都会自动回滚。

看这段代码,start和end之间是存储过程的主要部分。
这里是一个循环,从1 到1 00000,每个循环都会向emp表中插入一条记录。
请注意,我以前犯过这个错误,这意味着我没有意识到数据在不提交的情况下不会持久。

sql 创建或替换过程 t_emp(res out varchar2 ) 是 开始 对于我来说 1 ..1 00000 lac 插入 emp 值(empno,ename,hiredate)(i,'Sysuser'||to_char(i),sysdate); - 我承诺;这行注释的奉献精神是关键 结束循环; 资源 := '确定'; 异常 当其他人那么 回头; res := 'OF'||SQLERRM; 结束;
这个存储过程还包含异常处理,在实际应用中相当有用。
如果在插入期间发生任何异常,它将执行回滚以撤消所有更改,并将 res 返回值设置为“NG”并加上错误消息。

但是,当时我不明白为什么不提交数据就不会改变。
经过检查,原来是这样的:存储过程执行过程中,如果不手动执行commit,所有的DML操作都会在存储过程结束时自动回滚。
这就是为什么你看到的数据没有改变。

可能有点极端,但是我觉得这个细节还是相当重要的。
在实际工作中,如果涉及到插入或者更新大量的数据,一定要记得在正确的地方添加commit,否则可能会浪费数据。
我自己没有运行这个。
我记得数据是关于X的,但我建议你检查一下。

sqlplus与plsql有何区别

2 02 2 年,我刚刚接触数据库开发。
当时我还很困惑SQLPlus和PL/SQL之间的区别。
我当时正在做一个小项目,需要快速导出一些数据,所以我使用了SQLPlus的SELECT语句,几秒钟就完成了。
感觉很舒服。
后来项目大了,需要处理一些复杂的逻辑,我就尝试用PL/SQL写存储过程,但是遇到了很多问题。
调试了很长时间,代码才顺利运行。
我当时就很困惑,不知道为什么这么复杂。
后来我慢慢意识到,虽然SQLPlus和PL/SQL都是Oracle数据库工具,但是功能布局和应用场景完全不同。

SQLPlus就像数据库操作的“快捷键”。
它简单明了,适合做一些基本的问题和任务。
记得有一次,某个城市想要统计2 02 2 年某段时间的销售额,我直接用SQLPlus写了一个查询,很快就得到了结果。
但PL/SQL是一种可以编写复杂逻辑的编程语言。
例如,销售管理系统必须使用PL/SQL来编写存储过程并运行各种业务规则。
在实际应用中,我发现SQLPlus非常适合简单快速的操作,例如查看表结构和执行简单的数据更新。
但当涉及到批量更新或复杂的条件操作时,SQLPlus 似乎就无法做到它所做的事情。
相反,PL/SQL 擅长处理这些复杂的业务逻辑。
例如,某个城市需要处理数百万条订单数据。
可以通过PL/SQL存储过程同时完成,执行效率非常高。
SQLPlus 在错误处理和代码管理方面相对简单。
它在遇到错误时显示错误消息,并且没有很多特殊的处理方法。
PL/SQL 非常强大。
它有一个 TRY-CATCH 方法,可以捕获错误并执行相应的补偿逻辑。
而且,PL/SQL支持模块化编程,可以将代码打包在可重用的单元中,这大大降低了大型项目的维护成本。
SQLPlus单条语句在性能和效率方面执行模式适合简单的任务,但对于复杂的任务,效率就差很多。
PL/SQL可以通过批处理和逻辑封装来减少网络开销并提高性能。
记得有一次,我优化了一个PL/SQL存储过程,通过使用索引和优化查询,执行速度提高了1 0倍左右。

在学习方面,SQLPlus非常适合初学者快速入门数据库操作。
PL/SQL需要学习更多的编程概念,适合高级开发人员。
在实践中,调试技巧和性能分析非常重要。

总的来说,SQLPlus和PL/SQL是互补的,掌握它们可以充分发挥Oracle数据库的能力。
我当时就是这样,从简单的 SQLPlus 任务开始,逐渐进展到 PL/SQL。
回想起来,那个赛季虽然艰难,但也非常有收获。