powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проверить в процедуре, вывела ли она что-то в table?
4 сообщений из 4, страница 1 из 1
Проверить в процедуре, вывела ли она что-то в table?
    #39918035
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Процедура возвращает table, записи формируются в нескольких местах через return next;

Можно ли в конце процедуры какой-то командой узнать, вывелась ли хотя бы одна строка?
(Или добавлять переменную и считать кол-во при каждом return next?)

Спасибо!
...
Рейтинг: 0 / 0
Проверить в процедуре, вывела ли она что-то в table?
    #39918059
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Devillio,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
CREATE OR REPLACE FUNCTION public.test(
	)
    RETURNS TABLE(y integer, result text) 
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
    ROWS 1000
AS $BODY$
DECLARE notHasRows BOOL DEFAULT true;
BEGIN
    FOR y, result IN 
		-- здесь есть строки
                -- SELECT s.y, 'hi' result FROM generate_series(1,10,1) AS s(y)
		-- Здесь нет строк
		SELECT s.y, 'hi' result FROM generate_series(1,0,1) AS s(y)
    LOOP
        RETURN NEXT;
    END LOOP;
	
   IF FOUND AND notHasRows THEN
	notHasRows = false;
   END IF;
    
  FOR y, result IN 
		-- здесь есть строки
                -- SELECT s.y, 'hi' result FROM generate_series(1,10,1) AS s(y)
		-- Здесь нет строк
		SELECT s.y, 'hi' result FROM generate_series(1,0,1) AS s(y)
    LOOP
        RETURN NEXT;
    END LOOP;

   IF FOUND AND notHasRows THEN
	notHasRows = false;
   END IF;

    IF notHasRows THEN
 	RAISE EXCEPTION 'нет строк';
    END IF;  
END;
$BODY$;



Код: plsql
1.
SELECT test();
...
Рейтинг: 0 / 0
Проверить в процедуре, вывела ли она что-то в table?
    #39918201
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
entrypoint, благодарю!
Хотелось что-то типа FOUND для результата этой же процедуры (не только последнего селекта).
...
Рейтинг: 0 / 0
Проверить в процедуре, вывела ли она что-то в table?
    #39918246
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
FOR y, result IN
-- здесь есть строки
-- SELECT s.y, 'hi' result FROM generate_series(1,10,1) AS s(y)
-- Здесь нет строк
SELECT s.y, 'hi' result FROM generate_series(1,0,1) AS s(y)
LOOP
RETURN NEXT;
END LOOP;

просто return query select без перекладываний лишних.
loop имеет смысл если нужна еще какая-то логика.

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


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