一台机子上安装oracle9i和SQL Server2000的数据库,通过透明网关连接。 在PL/SQL中的问题现象: 
  1、select 查询没有问题:select * from staffrecord@link_sws,可以得到正确结果 
  2、直接insert语句没有问题:insert into staffrecord@link_sws.us.oracle.com("Empcode" ) values( 'Empcode'); 可以提交,也可以在MSSQL中看到正确结果。 
  3、把2中的insert语句放到触发器或存储过程过程中,可以执行,但提交失败(库中新行已创建,但commit失败),报错: ORA-02054: 事务处理6.31.95807有问题 
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息: 
[Transparent gateway for MSSQL] 
ORA-02063: 紧接着2 lines(源于LINK_SWS)

解决方案 »

  1.   

    是不是用户的权限不足?无法访问到sqlserver?
      

  2.   

    不会吧,前面两个语句都可以执行,并且可以将记录插入到MSSQL中啊,只是将语句放到触发器或存储过程中才会出错
      

  3.   

    就是第二步中的语句“insert into staffrecord@link_sws.us.oracle.com("Empcode" ) values( 'Empcode'); ”,在触发器外面就可以,但放到触发器中就不能提交了,触发器中只有这句话都不行
      

  4.   

    DBLINK的用户改成另一方数据的用户和密码试一下或是再授权。
      

  5.   

    http://topic.csdn.net/u/20090219/17/60f93969-3349-4a7e-be2a-1138fc4541d9.htmlhuang_xw 的回复
    把3的情况, 这个放到自主事务中就不会有问题了。通过这种方式解决了谢谢大家!!