用ORACLE或MYSQL实现在存储过程中使用事务和游标。随便写个Demo就行!
(问题解决,马上结贴,3Q)
(问题解决,马上结贴,3Q)
解决方案 »
- 关于如何冷备份恢复数据库
- 如何写一个触发器记录对profile的修改?
- binary_float_nan和binary_double_nan
- 数据库查询问题
- 在安装oracle数据库软件时,遇到的与数据库监听程序有关的问题
- 想创建一个before delete 触发器,使得符合条件的数据不被删除,怎么写呢?
- 关于这种Oracle数据库问题,应该看什么书呢?
- 求一SQL语句
- oracle 自定义函数如何返回自定义表类型
- 在C++中,如何实现对oracle的访问?
- 執行Oracle store Procedure時報錯:Object variable or With block variable not set
- 多表关联,连接表的合理个数是多少?
is
beginselect code into p_count from table1 where a=p_a; /**//*查询并返回值*/
temp := p_count; /**//*将返回值赋给临时变量*/
savepoint point1; /**//*保存点*/insert into table2(a,b)values(temp,p_b); /**//*将临时变量值添加到新表的字段*/savepoint point2;insert into
exception
when others then
rollback to savepoint point1; /**//*异常处理,保存点下面的操作都不会被执行*/
return; end;
as
v_f1 number(10,0);
cursor curt1 is
select f1 from t1 for update;
begin
open curt1;
loop
fetch curt1 into v_f1;
exit when curt1%notfound;
if (v_f1 = 1) then
update t1 set f2 = ’one’ where current of curt1;
elsif (v_f1 = 2) then
update t1 set f2 = ’two’ where current of curt1;
else
update t1 set f2 = ’others’ where current of curt1;
end if;
end loop;
commit;
return;
exception
when others then
begin
rollback;
end;
end pHasCursor;
TYPE ref_cur IS REF CURSOR; -- 游标申明 PROCEDURE prc_log_db_list(in_dbcode IN VARCHAR2, ---编码
out_flag OUT NUMBER, --返回标记
out_res OUT ref_cur --返回游标
);
END;
/
CREATE OR REPLACE PACKAGE BODY pkg_sys_log IS
PROCEDURE prc_log_db_list( in_dbcode IN VARCHAR2, ---编码
out_flag OUT NUMBER, --返回标记
out_res OUT ref_cur --返回游标
) IS
BEGIN
out_flag := 0; --默认成功
update dat_table set value='123' where code = in_dbcode; --更新数据
commit; --提交
OPEN out_res FOR SELECT code, name FROM dic_db; --打开游标
EXCEPTION
WHEN OTHERS THEN
ROLLBACK; --出错回滚
out_flag := 1; --失败标志
END prc_log_db_list;
END pkg_sys_log;
/