一个非常怪异的现象,是存储过程方面的问题??请高手指点!!!,在线等待!!

zx_ali 2002-10-07 04:50:53
我用MS SQL SERVER2000的数据库,在SQL SERVER上写存储过程(check_temp):
insert AB(SNO,A1,A2,A3,A4,B1,B2,B3,B4)
(SELECT A.SNO,A1,A2,A3,A4,B1,B2,B3,B4
FROM A,B
WHERE A.SNO= B.SNO)
pb中调用:
declare check_temp procedure for check_temp
using sqlca;
execute check_temp;
if sqlca.sqlcode= 0 then
commit using SQLCA;
else
rollback using sqlca;
messagebox("","")
end if
不知道为什么?数据就不能插入到AB 的表中??
是不是和SQL SERVER设置有关??如果是,如何设置呢??

...全文
45 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zqllyh 2002-10-08
补充,当存储过程中会出现锁的时候。比如使用了临时表
回复
zqllyh 2002-10-08
存储过程不自动提交,死机连连,直到存储过程执行完毕才解锁!
回复
joinkee 2002-10-08
判断一下 sqlca.sqlcode = 100 的情况

0 表示无错,有数据返回
100 表示无错,没数据返回
回复
bcbhj 2002-10-07
if sqlca.sqlcode= 0 then
commit using SQLCA;
else
rollback using sqlca;
messagebox("","")
end if
在SQL SERVER中用这玩意要小心

sqlca.autocommit = true

回复
奇遇 2002-10-07
用这个也行
declare check_temp procedure for check_temp
using sqlca;
sqlca.autocommit = true
execute check_temp;
sqlca.autocommit = false
回复
a2000 2002-10-07
补充:应在执行前将自动提交置为真
回复
a2000 2002-10-07
pb中执行存储存过程时应为sqlca.autocommit=true
执行后还原sqlca.autocommit=false
回复
奇遇 2002-10-07
不是因为去掉可以了,而是因为去了以后,断开连接后自动提交了
这样用也应该没问题的
declare check_temp procedure for check_temp
using sqlca;
execute check_temp;
commit using SQLCA;
回复
zx_ali 2002-10-07
是的,已经通过的,我去掉:
if sqlca.sqlcode= 0 then
commit using SQLCA;
else
rollback using sqlca;
messagebox("","")
end if
行了,加上就不能执行!为什么??
回复
奇遇 2002-10-07
在sqlserver的查询分析器中执行可以么?
exec check_temp
回复
相关推荐
发帖
PowerBuilder
创建于2007-09-28

891

社区成员

PowerBuilder 相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-10-07 04:50
社区公告
暂无公告