基于参数的Oracle存储函数定义游标

时间:2012-01-13 09:32:30

标签: oracle function plsql cursor

我想要一个像这样的存储函数:

create function myFunction (someSwitch boolean)
return ...
is
  cursor myCursor (params) is
    [BIG QUERY];
...

如果BIG QUERY为真,WHERE可以有额外的someSwitch子句。

这可以在游标定义中完成,如果是,如何?否则,我的选择是什么:我认为我可以创建两个游标(一个带有额外子句,另一个没有)然后在函数体中执行逻辑。我对这种方法不是很满意,因为查询非常大,我想避免重复代码。或者,我可以动态创建游标SQL;但这会导致性能下降,对吗?

谢谢:)

1 个答案:

答案 0 :(得分:4)

您可以这样添加地点:

where (some_condition or the_other_conditions)

AFAIK oracle将执行快捷方式OR。那就是:如果some_condition为true,则不会评估the_ohter_condition(并且,无论如何,这并不重要)。