С последним обновлением процедур поддержки PostgreSQL. Официальный блог цитирует "В отличие от функций процедуры не обязаны возвращать значение" (https://blog.2ndquadrant.com/postgresql-11-server-side-procedures-part-1/ а>)
Итак, мой вопрос: есть ли способ вернуть код ошибки или ответ в процедуре? (Процедуры появились в Postgres относительно недавно, поэтому онлайн-ресурсов было очень мало.)
Вот пример того, что я имел в виду, возвращая эти «коды ошибок».
create or replace PROCEDURE multislot_Update_v1
(
p_id in varchar2,
p_name in varchar2,
p_enname in varchar2,
results out SYS_REFCURSOR
) AS
rowNumber int;
defaultNumber int;
BEGIN
select count(1) into rowNumber from MULTISLOTSGAME where fid=P_id;
if (rowNumber = 0) then
open results for
select '1' as result from dual;
return;
end if;
update MULTISLOTSGAME set
name = P_name,
enname = P_enname
where fid = P_id ;
commit;
open results for
select '0' as result, t1.* from MULTISLOTSGAME t1 where fid = p_id;
END multislot_Update_v1;
Приведенный выше сценарий является процедурой Oracle, как вы можете видеть, если возвращенный результат равен «1», это означает, что обновление не было успешным.
Можно ли как-нибудь написать приведенный выше скрипт (с кодом ошибки) как процедуру PostgresSQL? Возможно, пример использования аргумента «INOUT» был бы отличным!
perform
для ее запуска внутри блока plpgsql. Вот пример функции, которая возвращает refcursor: stackoverflow.com/questions/6674787/ - person Kaushik Nayak   schedule 20.06.2018