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

754

社区成员

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

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