我的程序是用Delphi和SQL server开发的,现在需要和服务器端的Oracle数据库进行数据交换,具体需要完成下面几件事情:
1:根据SQL server中的一个表和Oracle中的一个表的信息更新Oracle中另外一个表(这个问题我通过在SQL server中建立链接服务器已经解决,但是不知道有没有更好的办法)。
2:以SQL server表中一个表A中某一个字段的值做参数,调用Oracle的存储过程,并将输出参数写入到SQL server中表A的另外一个字段中(由于在链接服务器中看不到Oracle的存储过程,所以我另外建立了一个ADOconnection来链接Oracle,然后遍历SQL server中表A中每一条记录,依次调用Oracle的存储过程,将输出参数写入到SQL server中另外的一个表里面,最后再用这个表来更新表A)
我现在的问题是,如果中间没有异常出现的话,这样的逻辑好像是可行的(希望能有更好的办法),但是如果有异常出现的话,这时候事务能保证什么,SQL server这边回滚,Oracle那边会不会回滚?如果不能回滚,对我这个程序来说,是不能容忍的。
请大家帮忙,分享一些经验,谢谢。
1:根据SQL server中的一个表和Oracle中的一个表的信息更新Oracle中另外一个表(这个问题我通过在SQL server中建立链接服务器已经解决,但是不知道有没有更好的办法)。
2:以SQL server表中一个表A中某一个字段的值做参数,调用Oracle的存储过程,并将输出参数写入到SQL server中表A的另外一个字段中(由于在链接服务器中看不到Oracle的存储过程,所以我另外建立了一个ADOconnection来链接Oracle,然后遍历SQL server中表A中每一条记录,依次调用Oracle的存储过程,将输出参数写入到SQL server中另外的一个表里面,最后再用这个表来更新表A)
我现在的问题是,如果中间没有异常出现的话,这样的逻辑好像是可行的(希望能有更好的办法),但是如果有异常出现的话,这时候事务能保证什么,SQL server这边回滚,Oracle那边会不会回滚?如果不能回滚,对我这个程序来说,是不能容忍的。
请大家帮忙,分享一些经验,谢谢。
解决方案 »
- 如何模拟鼠标按键
- [请教]如何把两个数据夹做对比然后做复制和删除动作?
- 紧急求助(100分):动态建立access表时怎么才能将字符型字段的“允许有空子符”设置为“是“缺省都是“否”
- 小问题
- 大侠,救命呀!!!昨晚到两点半都没有搞对.关于INSERT语句.
- 在DELPHI怎样发送消息给局域网其他用户,象在CMD 下的 NET SEND XXX XXXX那样????
- 兄弟们,为什么我这段代码不行啊,救命啊。。。。。。。
- DELPHI怎么发送数据到FMS呢?
- Delphi调用Oracle存储过程
- 是不是和delphi冲突问题
- 如何实现正常显示邮件内容?
- 有关VclSkin的问题,如何在窗体更新时,背景为不透明。因为刷新窗体时,出现很多的闪动,反正很乱。请大家帮忙。
只要没有COMMIT就可以用ROLLBACK回滚
过程格式如:
CREATE OR REPLACE PROCEDURE GXKHDJ(GSDM VARCHAR2,
DHAO VARCHAR2)
AS
MRJB VARCHAR2(2);
CNT NUMBER;
BEGIN
ERRNUM:=0;
MSG:='开始';
...
COMMIT; --提交
ERRNUM:=1;
MSG:='成功结束!';
EXCEPTION
WHEN OTHERS THEN
ROLLBACK; --回滚
ERRNUM:=-1;
MSG:='由于意外原因,失败!
'||SQLERRM;
END;
/