请教高手

shto 2000-03-30 10:07:00
在DELPHI中有一个关于SQL SERVER的问题请教
以下为SQL SERVER的存储过程:
CREATE proc RefreshNo
as
begin tran
declare cur1 cursor
for
select 序号 from table1
open cur1
fetch next from cur1
while @@fetch_status=0 begin
update table1 set 序号=5 where current of cur1
fetch next from cur1
end
close cur1
deallocate cur1
commit
为什么在DELPHI 5 中使用QUERY控件执行该存储过程没有出错信息,而

在SQL SERVER中查看TABLE1表,序号没有更改。
但在Sql SERVER中执行该存储过程就能生效。

请各位大虾救命
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paul_feng 2000-04-07
  • 打赏
  • 举报
回复
试试在DELPHI 5里用STOREDPROC执行你的存储过程
tanghuan 2000-03-31
  • 打赏
  • 举报
回复
可能是因为你的事务,在DELPHI 5 中使用QUERY时没有提交事务,
因为在DELPHI 5 中打开了一个事务,却没有提交(也许是需要
显式提交,如果改为自动提交就可以)

DELPHI 5 自动打开一个事务,事务记数为1,存储过程中又打开
事务,事务记数为2,存储过程完成时commit tran 使事务记数
为1,如果QUERY不是自动提交,又没有显式提交,关闭事务连接
时就把这个事务当作没有完成而回滚,所以数据库实际没有修改

在Sql SERVER中一般是自动提交,执行该存储过程的语句一执行
完毕就隐式提交使事务记数再减1后为0,数据库就执行更新,所
以修改成功

详细请查看Sql SERVER的transaction的相关内容

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧