首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以以编程方式退出Firebird脚本吗

我可以以编程方式退出Firebird脚本吗
EN

Stack Overflow用户
提问于 2018-04-17 17:51:56
回答 1查看 880关注 0票数 3

考虑以下脚本:

代码语言:javascript
复制
set term ^;

exit
^

execute block
as
begin
   execute statement 'this will fail';
end
^

exit是完全有效的,并且确实会导致脚本执行结束。至少在我正在测试这个的IBExpert中。但我想用编程的方式来做。

代码语言:javascript
复制
set term ^;

execute block
as
begin
   if (exists(select 1 from sometable where somevalue = 1)) then begin
      -- This only exits the block, not the script
      exit;
   end
end
^

execute block
as
begin
   execute statement 'this will fail';
end
^

在我的第一个示例中,exit是有效的Firebird还是IBExpert本身正在处理这个问题?有条件地退出整个脚本有不同的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 18:39:49

在脚本中使用exit与在Firebird语句中使用exit (特别是execute block)是混淆的。脚本中的普通exit被IBExpert解释为停止脚本的信号。

但是,当exitexecute block的一部分时,它是脚本的而不是的一部分,它是发送到火鸟服务器执行的语句的一部分,它对脚本本身的执行没有影响。

execute block语句中的代码是PSQL,其中EXIT具有特定的含义:

EXIT语句导致执行过程或触发器,从代码中的任意点跳到最终的END语句,从而终止程序。

在这里,程序是过程( execute block是匿名过程)或触发器。

换句话说,exitexecute block中会导致该execute block的终止,仅此而已。

我不知道IBExpert是否支持更高级的脚本选项,但是您可以查看从execute block返回一个值,并使用脚本中的一个条件退出(如果在IBExpert中可能的话)。另一种解决方案可能是在引发异常中使用execute block (假设IBExpert在出现错误时停止脚本)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49884519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档