当前位置:首页 » 存储配置 » oracle存储过程rollback

oracle存储过程rollback

发布时间: 2024-11-18 22:14:05

❶ oracle的存储过程不能使用drop语句吗

存储过程里面, 一般只写 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 , 然这个表不删除了。

❷ oracle 如何终止存储过程的运行!

select * from v$access a where object like '存储过程名%' --存储过程名为大写字母
select * from v$session where sid=74 --74为上一个查询得到的SID值,可能是多个,这里找到他们对应的serial#值
alter system kill session '74,118' --参数为'sid,serial#',用于停止这个回话,同时也终止了存储过程

❸ oracle存储过程中如何对一个变量累加赋值 最好有个例子

1、首先打开oracle数据库,如下图所示。

❹ Oracle中怎样用存储过程将一段字符串以逗号为界截取,并将得到的子串存到另一张表中

❺ 怎么在存储过程用事务避免并发

用事务操作语句,如 SAVE POINT; COMMIT; ROLLBACK;
oracle在执行第一个DML语句启动一个事务,不需要,自己begin transaction。
实际上通常不建议存储过程中直接控制事务

❻ oracle procere存储过程

OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS变量1 INTEGER :=0;变量2 DATE;BEGIN.END 存储过程名字2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;3、IF判断
IF 条件1 THEN Do Someting ELSIF 条件2 THEN Do Someting ELSIF 条件3 THEN Do Someting ELSE Do SometingEND IF;4、while循环
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP; 5、变量赋值
V_TEST := 123; 6、用for in使用cursor(游标)
. IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END; 7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select.into.给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。WHEN OTHERS THEN 表示是其它异常。RAISE表示抛出异常,让User可以看到。*/
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line(‘HI‘);
b.打开DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存储过程

❼ oracle存储过程插入一条数据,运行之后,数据不能插入

这种情况属于插入数据后,没有提交(commit),导致表被锁,所以需要进行提交(commit)或者回滚(rollback)操作。

如果当前session已关闭,可通过如下方法杀掉进程。

1、生成Kill Session语句

select'altersystemkillsession'''||SID||','||SERIAL#||''';'from
(
selectdistincta.sid,a.Serial#,status,machine,LOCKWAIT,logon_time
fromv$sessiona,v$locked_objectb
where(a.status='ACTIVE'ora.status='INACTIVE')
anda.sid=b.session_id
andb.ORACLE_USERNAME='XYHISTEST'--加上用户名是避免把其他系统的会话也关闭,以免伤及无辜

)

2、批量执行第一步生成的语句

altersystemkillsession'sid,serial#';
热点内容
怎么登陆appleid密码忘了怎么办啊 发布:2024-11-19 00:29:54 浏览:655
极地大乱斗挂机脚本 发布:2024-11-19 00:29:01 浏览:419
iphone怎么新建文件夹 发布:2024-11-19 00:24:37 浏览:912
免费代理服务器ip和端口怎么用 发布:2024-11-19 00:20:10 浏览:878
c语言带参数的宏 发布:2024-11-19 00:07:31 浏览:946
15人团队解压拓展有什么作用 发布:2024-11-18 23:46:34 浏览:307
百米2什么配置 发布:2024-11-18 23:37:55 浏览:650
mp3存储 发布:2024-11-18 23:20:08 浏览:865
自考专升本密码多少位 发布:2024-11-18 23:16:45 浏览:269
数据库底库 发布:2024-11-18 23:15:08 浏览:945