导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

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

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("警告","数据库修改出错"),如果是因为事物对象占用,那是否要重新注册一个事物对象给游标呢?
...全文
3 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
创建于2007-09-28

804

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告