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

return null;

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

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

returns <мой_тип>

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

returns void
...
Рейтинг: 0 / 0
25.01.2007, 15:55
    #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
25.01.2007, 16:06
    #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
25.01.2007, 16:20
    #34282658
resu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как не вернуть ничего из хранимки
iiiiiiiiiiiiiiiiiiiiiiii RETURNS SETOF ...
да. вобщем то ето и есть решение.

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


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