我正在将TSQL存储过程迁移到PL / SQL,并且遇到了问题-Oracle 10g中缺少CONTINUE关键字。
我已经阅读到Oracle 11g具有此新功能,但是不幸的是,升级不是一种选择。
10克中是否可以替代CONTINUE?我不认为将SP的逻辑重组为一种变通办法是不切实际的,因为我有一个外循环,一个IF,然后是一个嵌套IF,然后在该IF中语句块末尾的CONTINUE。 >
非常感谢任何帮助,欢呼。
我正在将TSQL存储过程迁移到PL / SQL,并且遇到了问题-Oracle 10g中缺少CONTINUE关键字。我已经读到Oracle 11g具有此新功能,但是升级是...
您可以使用goto and labels模拟继续。
尽管有点复杂,只是伪造的,您可以通过这种方式使用异常:
实际上,PL SQL确实可以代替CONTINUE。您要做的就是在循环中添加标签(名称):
为了将来的搜索,他们在oracle 11g中添加了continue
语句,可以像这样使用它:
[在10g中不可用,但是在11g中是new feature
您是否可以将IF重构为函数,并在适当的时候返回(如有必要,请提前返回)。然后,控制流将在正确的位置在循环中拾取。
不是很优雅,但是很简单:
在Oracle中,有一个类似的语句称为EXIT,它退出循环或函数/过程(如果没有要退出的循环)。您可以添加WHEN来检查某些条件。
这不完全是问题的答案,但值得注意: