oracle的存储过程不能使用drop语句吗?
【请问这段错误信息是什么意思?】还有一个小问题,有时候光标停到如图中的紫色位置就动不了了,只能在该位置打语句了。。求解...
【请问这段错误信息是什么意思?】
还有一个小问题,有时候光标停到如图中的紫色位置就动不了了,只能在该位置打语句了。。求解 展开
还有一个小问题,有时候光标停到如图中的紫色位置就动不了了,只能在该位置打语句了。。求解 展开
推荐于2018-03-12
展开全部
存储过程里面, 一般只写 DML 的语句。
也就是基本的 SELECT . INSERT, DELETE , UPDATE 这一类的语句。
如果你要在存储过程里面, 执行 DDL 语句。
也就是 CREATE, ALTER, DROP 这一类的语句。
那么需要使用动态 SQL 来处理。
也就是
EXECUTE IMMEDIATE ( 'CREATE TABLE test( id int ) ' );
EXECUTE IMMEDIATE ( 'DROP TABLE test ' );
这样的方式来处理。
对于 DDL 语句, 这类语句, 如果成功了, 就生效了, 不能回滚的。
也就是
当你 Drop Table 某个表的时候, 执行成功了, 表就被删除了。
不需要你 Commit 的。
你也无法 Rollback , 然这个表不删除了。
也就是基本的 SELECT . INSERT, DELETE , UPDATE 这一类的语句。
如果你要在存储过程里面, 执行 DDL 语句。
也就是 CREATE, ALTER, DROP 这一类的语句。
那么需要使用动态 SQL 来处理。
也就是
EXECUTE IMMEDIATE ( 'CREATE TABLE test( id int ) ' );
EXECUTE IMMEDIATE ( 'DROP TABLE test ' );
这样的方式来处理。
对于 DDL 语句, 这类语句, 如果成功了, 就生效了, 不能回滚的。
也就是
当你 Drop Table 某个表的时候, 执行成功了, 表就被删除了。
不需要你 Commit 的。
你也无法 Rollback , 然这个表不删除了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询