在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;
...全文
117 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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中调用。

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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