powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SELECT INTO ... plpgsql
8 сообщений из 8, страница 1 из 1
SELECT INTO ... plpgsql
    #38599100
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 Есть:
 
 CREATE FUNCTION func() RETURNS SETOF character AS $$
 BEGIN
 RETURN NEXT 'bla-bla-1';
 RETURN NEXT 'bla-bla-2';
 END;
 $$ LANGUAGE plpgsql;

 В другой функции ...

 ...
 DECLARE
  a1 character;
  a2 character;
 BEGIN
 SELECT func() INTO a1, a2;
 RAISE NOTICE 'first - %', a1;
 RAISE NOTICE 'second - %', a2;
 END;
 $$ LANGUAGE plpgsql;
 



Дает:
в первом выводе два значения в виде (bla-bla-1, bla-bla-2)
во втором - <NULL>

Такой вопрос а как распихать по двум переменным ?
Пасиба
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599131
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_День добрый!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 Есть:
 
 CREATE FUNCTION func() RETURNS SETOF character AS $$
 BEGIN
 RETURN NEXT 'bla-bla-1';
 RETURN NEXT 'bla-bla-2';
 END;
 $$ LANGUAGE plpgsql;

 В другой функции ...

 ...
 DECLARE
  a1 character;
  a2 character;
 BEGIN
 SELECT func() INTO a1, a2;
 RAISE NOTICE 'first - %', a1;
 RAISE NOTICE 'second - %', a2;
 END;
 $$ LANGUAGE plpgsql;
 



Дает:
в первом выводе два значения в виде (bla-bla-1, bla-bla-2)
во втором - <NULL>

Такой вопрос а как распихать по двум переменным ?
Пасиба
ткните пальцем в строку, являющуюся в вашем понимании той самой инструкцией, чей вывод у вас "первый".

а то мне её что-то не видно.
или она у вас такая скромная ?

ps имеет ли дон понимание, чем SELECT f_() отличается от SELECT * FROM f_()/
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599156
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,

По порядку, с конца:

- да "Дон" не понимает разницы, догадывается, но еще не понимает ...
- насчет скромности, - не выяснял, и вряд ли удастся ...
- тык:
Код: sql
1.
RAISE NOTICE 'first - %', a1;



ну а если без лишнего словоблудства, то вопрос можно сформулировать так:

каким образом можно получить значения возвращаемых значений вызываемой функции и распихать их по переменным в вызывающей функции?
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599217
Sasha Alias
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
CREATE FUNCTION func(OUT o_a1 character, OUT o_a2 character) RETURNS record AS $$
BEGIN
  o_a1 = 'bla-bla-1';
  o_a2 = 'bla-bla-2';
END;
$$ LANGUAGE plpgsql;
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599249
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_qwwq,

По порядку, с конца:

- да "Дон" не понимает разницы, догадывается, но еще не понимает ...
- насчет скромности, - не выяснял, и вряд ли удастся ...
- тык:
Код: sql
1.
RAISE NOTICE 'first - %', a1;



ну а если без лишнего словоблудства, то вопрос можно сформулировать так:

каким образом можно получить значения возвращаемых значений вызываемой функции и распихать их по переменным в вызывающей функции?
http://www.postgresql.org/docs/current/static/sql-select.html

см: "where from_item can be one of:"
и расшифровку ниже:
автор
Код: plaintext
1.
2.
function_name

    Function calls can appear in the FROM clause... 


т.е. буквально, SELECT function(); возвращает вам одно поле [с комплексным типом, если out
параметров много), которое потом конечно можно раскрыть, но зачем.
а SELECT * FROM function(); -- все поля возврата, если они объявлены в шапке ф-ии в out или returns table () формате.
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599268
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
был не прав. вообще не прочитал что вы там делаете в 1-й.

вам наддо как саша запихать 2 поля в возврат, и поиметь их в SELECT ... INTO
(думал у вас так и написано, как у , и вы не умеете из него получить оба поля разом)


или бегать по setof-у FOR LOOP конструкцией.
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599274
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq...или бегать по setof-у FOR LOOP конструкцией.

Код: 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.
BEGIN;

CREATE FUNCTION func() RETURNS SETOF varchar AS $$
 BEGIN

	 RETURN NEXT 'bla-bla-1';
	 RETURN NEXT 'bla-bla-2';
	 RETURN NEXT 'bla-bla-3';
END;
$$ LANGUAGE plpgsql;

DO
$do$
DECLARE
  _r varchar; --record;
  _i int4:=0;
 BEGIN
	 FOR _r IN
		SELECT func()  
	 LOOP
		_i=_i+1;
		RAISE NOTICE '_i - %, _r %'	,_i, _r; 
	END LOOP;
 END;
 $do$ LANGUAGE plpgsql;
 
ROLLBACK;
/*
ЗАМЕЧАНИЕ:  _i - 1, _r bla-bla-1
ЗАМЕЧАНИЕ:  _i - 2, _r bla-bla-2
ЗАМЕЧАНИЕ:  _i - 3, _r bla-bla-3
*/
...
Рейтинг: 0 / 0
SELECT INTO ... plpgsql
    #38599292
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq, Sasha Alias

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


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