powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Получение refcursor через dblink
2 сообщений из 2, страница 1 из 1
Получение refcursor через dblink
    #35439885
geniusoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Суть проблемы:
не получается написать обертку для удаленной функции. первый листинг - это удаленная функция, второй - обертка. Не получается через обертку вернуть нужный мне refcursor. Заранее спасибо


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE OR REPLACE FUNCTION user_load_by_email(p_email text)
  RETURNS refcursor AS
$BODY$
DECLARE
  l_res REFCURSOR;
BEGIN
    l_res := 'cur';
    OPEN l_res
    FOR
		SELECT * 
        	--id, email, password, first_name, last_name, status
	   	FROM users
	   	WHERE email = p_email;
    RETURN l_res;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST  100 ;
ALTER FUNCTION user_load_by_email(text) OWNER TO postgres;
GRANT EXECUTE ON FUNCTION user_load_by_email(text) TO public;
GRANT EXECUTE ON FUNCTION user_load_by_email(text) TO postgres;

Код: plaintext
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.
CREATE OR REPLACE FUNCTION user_load_by_email(p_email text)
  RETURNS refcursor AS
$BODY$
DECLARE
  l_res REFCURSOR;
	conn text;
BEGIN
	
    l_res := 'cur';
    conn := 'SELECT user_load_by_email('''||p_email||''')';  
    OPEN l_res
    FOR
	SELECT * FROM dblink((SELECT str FROM "ConnStr"),conn) as t1(id bigint,
	email character varying( 320 ),
	"password" character varying( 32 ),
	first_name character varying( 50 ),
	last_name character varying( 50 ),
	status smallint, -- 0 - non-registered - virtual...
	patronymic character varying( 50 ),
	birthday date);
    RETURN l_res;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST  100 ;
ALTER FUNCTION user_load_by_email(text) OWNER TO postgres;
GRANT EXECUTE ON FUNCTION user_load_by_email(text) TO public;
GRANT EXECUTE ON FUNCTION user_load_by_email(text) TO postgres;
...
Рейтинг: 0 / 0
Получение refcursor через dblink
    #35440198
iz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iz
Гость
Опишите ошибку подробнее. Также, в общем-то, не совсем понятна сама мотивация использования refcursor-ов для запроса с небольшим резалтсетом.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Получение refcursor через dblink
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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