过程是这样的1。开始一个transaction
2。往数据库里插入一条数据
3。查询刚提交的数据
4。commit请问在第3步的时候,能不能检索到第2步的数据?
需要加什么设置之类的吗?实在抱歉的,我用的是access,借oracle宝地问一下,因为access那边实在人很少
抱歉抱歉!!

解决方案 »

  1.   

    可以的。oracle不需要什麼特別設置。下面的例子希望對你有所幫助。-- 創建測試表
    create table test123 (id number, name varchar2(20)); 
    -- 創建序列
    create sequence seq_test123_id start with 1 increment by 1;-- 創建一個存儲過程來insert數據
    create or replace procedure insert_test123(vname varchar2, vid out number) -- out參數可以返回給調用者
    is
      vrid rowid; -- rowid變量
    begin
      -- Oracle 不需要特別聲明開始一個transaction
      insert into test123 (id, name) values (seq_test123_id.nextval, vname) return rowid into vrid;
      select id into vid from test123 where rowid = vrid; -- 查詢剛插入的數據
      
      commit; -- 提交
    end;
    /-- 下面是測試該存儲過程
    set serveroutput on
    declare
      vid number;
    begin
      insert_test123('ABC', vid);
      dbms_output.put_line(vid);
    end;
      

  2.   

    在oracle中是可以查到的,但是其他用户是查不到的,
    access吗?咱不懂,去问问access高手吧
      

  3.   

    ORACLE中是可以的,并且不需要设置!
      

  4.   

    对阿,我也觉得应该检索的到啊,但access中似乎不行,反正我按照顶楼的流程,没有看到刚插进去的数据。
    多等等,有没有又用access又用oracle的大人们啊?
      

  5.   

    同一个过程中的,oracle是可以看到的,准确的说是同一个会话中,DML操作是不需要提交就可以看到结果的。
      

  6.   


    只要是在同一个session 就可以 
      

  7.   

    oracle 用的是事务隔离, LZ的情况下,不考虑表空间不够或者UNDO不够, 操作的当前用户是肯定可以查看到那个数据的。 如果别的用户这个时间点去查, 是看不到那个数据的。 对于ACCESS和DB2这种数据库没有UNDO的机制。 非本操作用户应该是看的到那个数据的。