在pb代码中如何实现update sysobjects

xister 北京天鹏恒宇科技发展有限公司 软件部经理/开发主管  2008-04-17 11:51:13
大家知道想要更新系统表sysobjects在查询分析器中可用
sp_configure 'allow updates',1
reconfigure with override
go
update sysobjects set crdate='2003-12-14' where id=10
go
sp_configure 'allow updates',0
reconfigure with override
可以上这些代码我如何在PB 中写代码来实现呢?
以下是我定的代码不过不能执行成功,请高手指点。
DECLARE sp_ca PROCEDURE FOR sys.sp_configure
@configname = 'allow updates',
@configvalue = 1 ;
execute sp_ca;
if sqlca.sqlcode=-1 then
gs_error=sqlca.sqlerrtext
rollback;
messagebox('error',gs_error)
return -1
end if
ls_sql="reconfigure with override"
EXECUTE IMMEDIATE :ls_sql using sqlca;

update sysobjects set crdate='2003-12-14' where name='gdzc_yw_pjtj';
//此种写法PB中就不能compile,提示“DATABASE C0038:不允许对系统目录即席更新”
if sqlca.sqlcode=-1 then
gs_error=sqlca.sqlerrtext
rollback;
messagebox('error',gs_error)
return -1
end if

ls_sql="update sysobjects set crdate='2003-12-14' where name='gdzc_yw_pjtj' "
EXECUTE IMMEDIATE :ls_sql using sqlca;
//这种写法执行没有效果

DECLARE sp_cb PROCEDURE FOR sys.sp_configure
@configname = 'allow updates',
@configvalue = 0 ;
execute sp_cb;
if sqlca.sqlcode=-1 then
gs_error=sqlca.sqlerrtext
rollback;
messagebox('error',gs_error)
return -1
end if
ls_sql="reconfigure with override"
EXECUTE IMMEDIATE :ls_sql using sqlca;
...全文
55 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xister 2008-05-19
我的想法就是想在不加存储的情况下实现!
回复
ribut9225 2008-04-21
同意一楼的做法
回复
编程的夜猫 2008-04-20
写存储过程
dp_UpdateSysTable
如下:
Create Procedure dp_UpdateSysTable
@date1 varchar(10),@name varchar(200)
as
begin
sp_configure 'allow updates',1
reconfigure with override
go
update sysobjects set crdate=@date1 where name=@name
go
sp_configure 'allow updates',0
reconfigure with override

end
然后在PB中调用这此存储过程
回复
xister 2008-04-20
期待大家的回答!
回复
编程的夜猫 2008-04-18
试试写成带参数的存储,然后要PB中调用。
回复
相关推荐
发帖
数据库相关
创建于2007-09-28

734

社区成员

PowerBuilder 数据库相关
申请成为版主
帖子事件
创建了帖子
2008-04-17 11:51
社区公告
暂无公告