在pb脚本中用动态sql禁用某表触发器,如何判断是否成功?

phonixman 2009-07-28 08:57:40
源码:

ls_sql ="Alter Talbe Table1 Disable Trigger TU_Table1"
exec immediate :ls_sql;

如何判断执行返回值呢?用sqlca.sqlcode判断,无论如何都是返回 -1 ,但查看触发器发现的确已禁用。在2句前后加上sqlca.autocommit=true 和sqlca.autocommit=false得到的返回值也是-1。求解决。
...全文
172 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
myclife 2009-07-28
SQL server里好像直接return 值就行,并用RAISERROR('errorinfo!',16,1)返回自定义错误文本。

回复
phonixman 2009-07-28
[Quote=引用 3 楼 myclife 的回复:]
把alter语句封装到存储过程里获取返回值试试。
[/Quote]
给个例子,如何获取存储过程返回执.谢谢!
回复
myclife 2009-07-28
把alter语句封装到存储过程里获取返回值试试。
回复
singsongs 2009-07-28
这个问题不会,但是帮顶,期冀高手过来回答!
回复
lmzyhy 2009-07-28
好像没有办法判断
回复
phonixman 2009-07-28
谢谢楼上的几位.我这样解决了:写个禁用触发器的存储过程,然后pb中调用该存储过错,判断返回值来判断是否禁用成功.
回复
永生天地 2009-07-28
你这两句都有问题,我来给你改改

ls_sql ="Alter Table Table1 Disable Trigger TU_Table1"
execute immediate :ls_sql;

还有如果不设置sqlca.autocommit = true
必须写上commit
if sqlca.sqlcode<>0 then
messagebox(string(sqlca.sqlcode),sqlca.sqlerrtext)
rollback;
else
commit;
end if

建议不要只看sqlca.sqlcode这个只能报告执行是否成功,

而sqlca.sqlerrtext可以报告错误信息

[Quote=引用楼主 phonixman 的回复:]
源码:

ls_sql ="Alter Talbe Table1 Disable Trigger TU_Table1"
exec immediate :ls_sql;

如何判断执行返回值呢?用sqlca.sqlcode判断,无论如何都是返回 -1 ,但查看触发器发现的确已禁用。在2句前后加上sqlca.autocommit=true 和sqlca.autocommit=false得到的返回值也是-1。求解决。
[/Quote]
回复
发动态
发帖子
数据库相关
创建于2007-09-28

732

社区成员

PowerBuilder 数据库相关
申请成为版主
社区公告
暂无公告