修改失败是因为事务对象占用了吗?

hhdehh 2003-12-18 01:29:57
declare CUR_roomcancel CURSOR FOR
select yd_df_roomid,yd_df_date
from yd_df
where yd_df_prearrangeid=:ii_preid;

open CUR_roomcancel;

do until ii_preid<0
FETCH CUR_roomcancel INTO :li_roomid,:ld_date;
if SQLCA.SQLCode=100 or SQLCA.SQLCode=-1 then exit
update yd_df
set yd_df_use = '0'
where yd_df_prearrangeid=:ii_preid and yd_df_roomid=:li_roomid and yd_df_date=:ld_date;
if sqlca.sqlcode=-1 then
rollback ;
messagebox("警告","数据库修改出错")
return -1
end if

运行时报错messagebox("警告","数据库修改出错"),如果是因为事物对象占用,那是否要重新注册一个事物对象给游标呢?
...全文
20 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hhdehh 2003-12-19
to:: baoqiangwang(我是一只小小鸟)
存储过程该怎么写呀:我在sybase里这样写了一个存储过程还是不行

CREATE PROCEDURE dbo.dw_content
@prearrangeid numeric(10,0)
AS

BEGIN
select yd_df_roomid,yd_df_date
from yd_df
where yd_df_prearrangeid=@prearrangeid

END

  • 打赏
  • 举报
回复
hhdehh 2003-12-19
up
  • 打赏
  • 举报
回复
suzh1133 2003-12-18
update 写在游标里面到没什么问题,应该是事务对象占用

你把
if sqlca.sqlcode=-1 then
rollback ;
messagebox("警告","数据库修改出错")
return -1
删除。

在游标结束后使用commit。执行程序后,到数据库中看下数据是否真确的存进去了
  • 打赏
  • 举报
回复
mittee 2003-12-18
为何要在循环中update,我觉得这样不妥
  • 打赏
  • 举报
回复
见已拟改成存储过程就没事了
dw_content 的sql语法为
select yd_df_roomid,yd_df_date
from yd_df
where yd_df_prearrangeid=:ii_preid;

datastore ids_data
ids_data=create datastore
ids_data.dataobject= 'dw_contect'
ids_data.settransobject(SQLCA)
ids_data.retireve(para)
for i = 1 to ids_data.rowcount()
li_roomid=ids_data.object.roomid[i]
ld_date=ids_data.object.date[i]
update yd_df
set yd_df_use = '0'
where yd_df_prearrangeid=:ii_preid and yd_df_roomid=:li_roomid and yd_df_date=:ld_date;
if sqlca.sqlcode=-1 then
rollback ;
messagebox("警告","数据库修改出错")
return
end if
next
  • 打赏
  • 举报
回复
hhdehh 2003-12-18
我用的是sybase11.5,用sqlca.sqlerrtext,没显示任何错误文本,
  • 打赏
  • 举报
回复
workhand 2003-12-18
改成messagebox('',sqlca.sqlerrtext)就可以看到具体的错误信息了,把它贴出来看看
  • 打赏
  • 举报
回复
相关推荐
发帖
PowerBuilder

999

社区成员

PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
加入社区
帖子事件
创建了帖子
2003-12-18 01:29
社区公告
暂无公告