powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как не вернуть ничего из хранимки
10 сообщений из 10, страница 1 из 1
как не вернуть ничего из хранимки
    #34280010
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть процедура (хранимка) возвращающая запись, если таковая имеется, а как сделать так, чтобы не возвращалось ничего?
т.е. если выполняется не хорошее условие - я вызываю EXCEPTION , но хочу вернуть приложению не ошибку, а ничего. т.е.

return null;

вернет запись с NULL-значениями в ней (т.е. один RECORDSET будете возвращен в любом случае),
а вот как чтобы не было ничего, типа
select * from aaa where 2=1;
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34280156
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно написать функцию, которая будет возвращать setof [нужный тип]. И при определенных условиях в этой функции ниразу НЕ вызывать return next... Сразу вызвать return.
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34280252
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, но
в конструкциях SETOF, RETUN без NEXT - не покатит (как минимум в PGSQL 8.1.4).

в моем случае хранимка без SETOF, но и тут RETURN; без ничего не катит.
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34280256
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. мне фактически надо превратить "stored function" в "stored procedure"
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34280334
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
resuт.е. мне фактически надо превратить "stored function" в "stored procedure"
Код: plaintext
1.
... RETURNS VOID ...
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34280338
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34280361
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
... RETURNS VOID ...
[/quot]
спасибо, но
хранимка должна (!) возвращать запись или ничего (0 rows), если выполнилось какое-то условие которое я отлавливаю по RAISE EXCEPTION, но в приложение я не хочу передавать ошибку,
а только сообщение и "само ето НИЧЕГО" (0 rows) из хранимки.
т.е. она у меня :

returns <мой_тип>

и лишь в частном случае становится как-бы:

returns void
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34282533
CREATE OR REPLACE FUNCTION test_null_returning()
RETURNS SETOF int4 AS
$BODY$
BEGIN
IF FALSE THEN
RETURN NEXT 1;
END IF;
RETURN;

END$BODY$
LANGUAGE 'plpgsql' VOLATILE;

SELECT * FROM test_null_returning();
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34282587
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, все правильно, но для случая с RECORDSET (SETOF) , а если мне нужно лишь record, то ето не прокатит:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create type aaa as(
	i	int
);

CREATE OR REPLACE FUNCTION test_null_returning()
RETURNS  aaa AS
$BODY$
declare
	a		aaa;
BEGIN
IF FALSE THEN
  a.i :=  1 ;
--  RETURN NEXT a;
  RETURN a;
END IF;
RETURN;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE;

ERROR:  RETURN must specify a record or row variable in function returning tuple at or near ";"
наверное ето возможно только так, как вы сказали.
спасибо
...
Рейтинг: 0 / 0
как не вернуть ничего из хранимки
    #34282658
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iiiiiiiiiiiiiiiiiiiiiiii RETURNS SETOF ...
да. вобщем то ето и есть решение.

спасибо
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как не вернуть ничего из хранимки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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