用ORACLE或MYSQL实现在存储过程中使用事务和游标。随便写个Demo就行!
(问题解决,马上结贴,3Q)

解决方案 »

  1.   

    create or replace procedure pr_mypro2(p_a in varchar2,p_b in varchar2,p_count out number)temp varchar2(1000);   /**//*定义临时变量*/
    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;
      

  2.   

    create or replace procedure pHasCursor
    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;
      

  3.   

    完整的包:CREATE OR REPLACE PACKAGE pkg_sys_log IS
      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;
    /