powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Съесть код ошибки
7 сообщений из 7, страница 1 из 1
Съесть код ошибки
    #40001841
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос про правила хорошего тона в программировании.

Как в PL/SQL принято проигнорировать возвращаемое значение из функции?
Бывают случаи, когда возвращаемое значение просто не нужно, например код намеренно не обрабатывает ошибку.
Нужно вызвать функцию, и в явном виде указать компилятору что вызывается в режиме процедуры.

К примеру, что-то такое (пример, могут быть опечатки)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
-- переводит строку в прописные буквы, возвращает 0 если строчных букв не было (ноль работы), 1 если были
function UpperInPlace( s in out varchar2 ) return integer deterministic
begin
  if s = upper(s) then return 0; end if;
  s := upper(s);
  return 1;
end;


Я могу обернуть функцию в процедуру, где сохраню значение и потом его как-то употреблю, чтоб компилятор не ругался.
Я могу извратиться таким образом

Код: plsql
1.
if UpperInPlace('xxx') is null then null; end if; -- вызов функции как процедуры, должно работать для всех типов данных



а есть синтакс чтобы напрямик вызвать функцию как процедуру?

null := UpperInPlace('aaa');

(IGNORE_RETURN_VALUE)UpperInPlace('bbb');

Что-то подобное, о чем я не знаю?
...
Рейтинг: 0 / 0
Съесть код ошибки
    #40001848
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Чтобы продать что-нибудь ненужное надо сначала купить что-нибудь ненужное, а у нас денег
нет." (с)

Это вопрос к тому странному человеку, который возвращает из функции что-нибудь ненужное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Съесть код ошибки
    #40001859
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

"Чтобы продать что-нибудь ненужное надо сначала купить что-нибудь ненужное, а у нас денег
нет." (с)

Это вопрос к тому странному человеку, который возвращает из функции что-нибудь ненужное.


Смешно, конечно :). В одном из моих конкретных случае это dbms_lock.Release() во время обработки исключений.
Он возвращает значение, но во время обработки исключения нет желания его анализировать, просто разлочить ресурс и выйти.

Я пока остановился на
Код: plsql
1.
if dbms_lock.Release( MyLock) != 0 then null; end if; -- выразить обеспокоенность, но ничего не делать


Может кто-то из старейшин форума придумал что-то лучше и давно пользуется, или даже есть официальная рекомендация Оракла как обходить этот недочет языка. Я поискал, и нашел много жалоб и мало удобных решений.
...
Рейтинг: 0 / 0
Съесть код ошибки
    #40001865
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто оберните вызовы dbms_lock в собственные lock, release и сделайте как Вам удобно.
...
Рейтинг: 0 / 0
Съесть код ошибки
    #40001871
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
...

Я пока остановился на
Код: plsql
1.
if dbms_lock.Release( MyLock) != 0 then null; end if; -- выразить обеспокоенность, но ничего не делать


...

Это здорово.
Наверно поэтому в соседнем топике фотография с ошибкой из dbms_lock.

По поводу совета Dimitry Sibiryakov - поймите правильно - дело ведь не только в жадности кота,
а еще в получении в довесок к покупке юридических последствий от владения ненужным.
...
Рейтинг: 0 / 0
Съесть код ошибки
    #40002328
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
Просто оберните вызовы dbms_lock в собственные lock, release и сделайте как Вам удобно.


Так ведь компилятор, гад, тогда ругается что переменной присвоил значение, и не использовал :)
Практически шило на мыло.
...
Рейтинг: 0 / 0
Съесть код ошибки
    #40002351
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
компилятор, гад, тогда ругается что переменной присвоил значение, и не использовал :)

Ах это...
Эти warnings можно и подавить:
https://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams166.htm#REFRN10249
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Съесть код ошибки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]