一条sql语句,两个事务处理的问题!!!请高手帮帮忙!!!急!!!!急!!!!急!!!!急!!!!

anke 2006-09-22 11:06:36
环境:远端sybase,本地sqlanywhere

两端同时都存在a表,现在想通过pb,建立两个事务处理,用一条sql语句,将远端sybase数据库中的a表下载到本地.

已经尝试过如下方式,均失败!!!特向高手请教!!!!!
远端定义:sqlca
本地定义:sql_local

insert into a select * from sqlca..a using sql_local;
insert into a select * from 远端数据库名称..a using sql_local;
insert into 本地数据库名称..a select * from 远端数据库名称..a;
insert into a using sql_local select * from a using sqlca;


至今没有解决!!

请高手帮帮忙!!!急!!!!急!!!!急!!!!急!!!!请高手帮帮忙!!!急!!!!急!!!!急!!!!急!!!!
...全文
189 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
polestarxu 2006-09-23
做两个数据窗口(或数据存储),分别连两个事务,一个读取,一个写入更新.
这种方法更慢.
再说数据管道也不慢啊
回复
polestarxu 2006-09-23
游标最慢,管道比数据窗口/数据存储 还是要快一点的
回复
lionkings 2006-09-23
你是想在程序執行時一個按鈕實現嗎? 那么可以這樣寫﹕
實例或全局變量定義一個 Transaction MY_SQLCA
在程序開頭寫上一句連接數據庫或在窗口open時寫﹕
// Profile Powersoft Demo DB V6
SQLCA.DBMS = "ODBC"
SQLCA.Database = "Powersoft Demo DB V6"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=Powersoft Demo DB V6;UID=dba;PWD=sql'"
connect using MY_SQLCA
if sqlca.sqlcode = 0 then
...
else
messagebox('','無法連接XX數據庫')
end if
在你的程序中寫﹕
insert into a (select * from a using MY_SQLCA) ;
這條語句沒測試過﹐不行的話就用游標或DW
dw_1.settransobjct(MY_SQLCA)
dw_2.settransobjct(sqlca)

for i = 1 to dw_1.rowcount()
//insertrow to dw_2
...
next

if dw_1.update()= 1 then
commit;
else
rollback;
end if
....



回复
anke 2006-09-22
可是我并不想使用数据管道,效率有点底!!!!也是就像解决这个双事务问题,还有没有其他办法!
回复
polestarxu 2006-09-22
一条SQL是不能连接两个事务的.
建立一个数据管道就可以了,看看数据管道的相关知识吧.很简单的
回复
polestarxu 2006-09-22
通过数据管道来传送数据.
回复
相关推荐
发帖
数据库相关
创建于2007-09-28

738

社区成员

PowerBuilder 数据库相关
申请成为版主
帖子事件
创建了帖子
2006-09-22 11:06
社区公告
暂无公告