|
Вопрос по перезагрузке функций, возвращающих разные типы
|
|||
---|---|---|---|
#18+
Хочу сделать так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Но такой вариант перезагрузки является неоднозначным. Не подскажите, можно ли это как-то обойти, не добавляя в список аргументов фиктивный аргумент? Переделать все на процедуры с out-параметром разного типа можно, но это на крайний случай, мне бы хотелось сохранить возможность использования функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 01:06 |
|
Вопрос по перезагрузке функций, возвращающих разные типы
|
|||
---|---|---|---|
#18+
С другой стороны. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Это штатное и обычное использование или сомнительный трюк? Если это обычно, то такое меня вполне устроит. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 01:16 |
|
Вопрос по перезагрузке функций, возвращающих разные типы
|
|||
---|---|---|---|
#18+
Alibek B., Для начала, а откуда вообще возникал необходимость делать неоднозначную перегрузку по возвращаемому типу? Это как минимум чревато PLS-307: too many declarations при вызове в sql или при любом другом неявном приведении типов. В чём глубокий смысл такого странного желания? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 09:12 |
|
Вопрос по перезагрузке функций, возвращающих разные типы
|
|||
---|---|---|---|
#18+
Alibek B. хотелось сохранить возможность использования функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 09:22 |
|
Вопрос по перезагрузке функций, возвращающих разные типы
|
|||
---|---|---|---|
#18+
env Это как минимум чревато PLS-307: too many declarations при вызове в sql или при любом другом неявном приведении типов. Под "является неоднозначным" я это и имею ввиду. Поэтому спрашивал про способы обхода, чтобы устранить неоднозначность. env В чём глубокий смысл такого странного желания? Просто хочется. По сути это процедура -- она выполняет определенные проверки, производит определенные изменения (находит или добавляет объект в БД) и возвращает данные объекта. Но в некоторых случаях мне не нужны все данные объекта, а нужен только его идентификатор или код, тогда я использую его как функцию. Или в некоторых ЯП может быть сложно или неудобно оформлять блок PL/SQL, в этих случаях проще получить данные в виде "select f1(123) from dual". Elic RTFM Спасибо, но я и сам догадался, что Oracle не умеет заглядывать слева от точки использования функции и соответственно нельзя перезагружать функцию с разными возвращаемыми типами. Такое ограничение можно обойти разными способами, например так: Код: plsql 1. 2. 3. 4. 5. 6.
Такой способ мне не нравился. Но вот найденная возможность перезагружать тип (функция или процедура) вполне устраивает, если только не окажется, что это баг. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 09:37 |
|
|
start [/forum/topic.php?fid=52&fpage=29&tid=1880577]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 140ms |
0 / 0 |