powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Я как-то не правильно использую INOUT параметры
2 сообщений из 2, страница 1 из 1
Я как-то не правильно использую INOUT параметры
    #39191784
trak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример:

Код: 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.
create function trak_test001(inout int,inout int, inout int)
AS
$BODY$
<<trak_test001>>
DECLARE
  x ALIAS FOR $1;
  y ALIAS FOR $2;
  z ALIAS FOR $3;

BEGIN
  Raise DEBUG  'trak_test001 FOR x=% y=% z=% ',x,y,z;
  x:=x+1;
  y:=y+1;
  z:=z+1;
END trak_test001;
$BODY$
LANGUAGE plpgsql VOLATILE 
COST 1000;

create function trak_test002()
RETURNS void
AS
$BODY$
<<trak_test002>>
DECLARE
  x int default 0;
  y int default 0;
  z int default 0;

BEGIN
  Raise DEBUG  'trak_test002 FOR x=% y=% z=% ',x,y,z;
 SELECT (trak_test001(x,y,z)).* INTO x,y,z;
    Raise DEBUG  'trak_test002 FOR x=% y=% z=% ',x,y,z;
END trak_test002;
$BODY$
LANGUAGE plpgsql VOLATILE 
COST 1000;

SELECT trak_test002();



В дебагге вижу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DEBUG:  trak_test002 FOR x=0 y=0 z=0
DEBUG:  trak_test001 FOR x=0 y=0 z=0 
CONTEXT:  SQL statement "SELECT (trak_test001(x,y,z)).*"
PL/pgSQL function trak_test002() line 10 at SQL statement
DEBUG:  trak_test001 FOR x=0 y=0 z=0 
CONTEXT:  SQL statement "SELECT (trak_test001(x,y,z)).*"
PL/pgSQL function trak_test002() line 10 at SQL statement
DEBUG:  trak_test001 FOR x=0 y=0 z=0 
CONTEXT:  SQL statement "SELECT (trak_test001(x,y,z)).*"
PL/pgSQL function trak_test002() line 10 at SQL statement
DEBUG:  trak_test002 FOR x=1 y=1 z=1
Total query runtime: 56 msec
1 строка получена.




То есть, моя функция вызывалсь фактически три раза. Как это приличные люди делают?
Спасибо!

---
Гроб карманов не имеет.
...
Рейтинг: 0 / 0
Я как-то не правильно использую INOUT параметры
    #39191794
trak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trak, разобрался, я сам себе злобный буратино. Надо так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create function trak_test002()
RETURNS void
AS
$BODY$
<<trak_test002>>
DECLARE
  x int default 0;
  y int default 0;
  z int default 0;

BEGIN
  Raise DEBUG  'trak_test002 FOR x=% y=% z=% ',x,y,z;
 SELECT * INTO x,y,z FROM trak_test001(x,y,z);
    Raise DEBUG  'trak_test002 FOR x=% y=% z=% ',x,y,z;
END trak_test002;
$BODY$
LANGUAGE plpgsql VOLATILE 
COST 1000;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Я как-то не правильно использую INOUT параметры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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