Oracle сохраняет функцию определения курсора на основе параметра - PullRequest
0 голосов
/ 13 января 2012

Я хочу сохранить функцию, например, так:

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

Где BIG QUERY может иметь дополнительное предложение WHERE, если someSwitch - true.

Можно ли это сделать в пределах определения курсора и, если да, то как? В противном случае, какие будут мои варианты: я думаю, что я мог бы либо создать два курсора (один с дополнительным предложением, другой без), а затем выполнить логику в теле функции. Я не очень удовлетворен этим подходом, так как запрос очень большой, и я бы хотел избежать повторения кода. В качестве альтернативы, я мог бы динамически создавать курсор SQL; но это повлечет за собой снижение производительности, верно?

Спасибо:)

1 Ответ

4 голосов
/ 13 января 2012

Вы можете добавить where таким образом:

where (some_condition or the_other_conditions)

AFAIK oracle сделает ярлык OR.То есть: если some_condition имеет значение true, the_ohter_condition не будет оцениваться (и, в любом случае, это не важно).

...