powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Работа с выходными параметрами функций в PostgreSQL
10 сообщений из 10, страница 1 из 1
Работа с выходными параметрами функций в PostgreSQL
    #39385561
Agers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, подскажите пожалуйста. Требуется хранимая функция, которая выдает на вход несколько строковых параметров. В Oracle и MS SQL делал без проблем. А тут что-то не выходит. При попытке вызова выдается ошибка:

ERROR: function tems.getcomponentconnectionparams(ptestenvid => integer, pconnectionidentifier => unknown, pversionno => character varying, phostname => character varying, pipaddress => character varying, punifiedhostname => character varying, pportno => integer, ptns => character varying, pdbname => character varying, pschemaname => character varying, ptargetvalue => character varying, ploginname => character varying, ppasswordvalue => character varying, perrormessage => character varying) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Context: PL/pgSQL function tems.doit() line 21 at PERFORM

Хотя функция компилится без ошибок

Объявлена функция так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE OR REPLACE Function tems.GetComponentConnectionParams
(
    in pTestEnvID int,
    in pConnectionIdentifier Varchar,
    out pVersionNo Varchar,
    out pHostName Varchar,
    out pIPAddress Varchar,
    out pUnifiedHostName Varchar,
    out pPortNo Int,
    out pTNS Varchar,
    out pDBName Varchar,    
    out pSchemaName Varchar,
    out pTargetValue Varchar,
    out pLoginName Varchar,
    out pPasswordValue Varchar,
    out pErrorMessage Varchar
  )   
returns record  
    LANGUAGE 'plpgsql'
    COST 100.0
    VOLATILE NOT LEAKPROOF 
AS $function$



В конце - Return без параметров

Как сделать, чтобы возвращались параметры ?
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385568
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agers,

Он же тебе говорит, что нет такой функции, которую ты пытаешься вызвать.

Возможно соль в:
авторpconnectionidentifier => unknown
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385572
Agers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__kK,

Я то же перевел сообщение. Вопрос в том, что функция существует и отображается в списке функций в PGAdmin. Но вызов не проходит.

Вызываю так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
perform tems.getcomponentconnectionparams(
	ptestenvid := 5, 
	pconnectionidentifier := 'IBS_OSB_WS', 
	pversionno := vVersionNo, 
	phostname := vHostName, 
	pipaddress := vIPAddress, 
	punifiedhostname := vUnifiedHostName, 
	pportno := vPortNo, 
	ptns := vTNS, 
	pdbname := vDBName, 
	pschemaname := vSchemaName, 
	ptargetvalue := vTargetValue, 
	ploginname := vLoginName, 
	ppasswordvalue := vPasswordValue, 
	perrormessage := vErrorMessage
);
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385584
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agers,

А если 'IBS_OSB_WS' привести к varchar явно?
типа 'IBS_OSB_WS'::varchar ?
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385601
Agers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__kK,
Спасибо за идею. Объявил переменную и указал в качестве параметра. Слово unknown исчезло, но это не помогло.

ERROR: function tems.getcomponentconnectionparams(ptestenvid => integer, pconnectionidentifier => character varying, pversionno => character varying, phostname => character varying, pipaddress => character varying, punifiedhostname => character varying, pportno => integer, ptns => character varying, pdbname => character varying, pschemaname => character varying, ptargetvalue => character varying, ploginname => character varying, ppasswordvalue => character varying, perrormessage => character varying) does not exist
LINE 1: SELECT tems.getcomponentconnectionparams(
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT tems.getcomponentconnectionparams(
ptestenvid := 5,
pconnectionidentifier := vconnectionidentifier,
pversionno := vVersionNo,
phostname := vHostName,
pipaddress := vIPAddress,
punifiedhostname := vUnifiedHostName,
pportno := vPortNo,
ptns := vTNS,
pdbname := vDBName,
pschemaname := vSchemaName,
ptargetvalue := vTargetValue,
ploginname := vLoginName,
ppasswordvalue := vPasswordValue,
perrormessage := vErrorMessage
)
CONTEXT: PL/pgSQL function tems.doit() line 22 at PERFORM
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385620
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agers,

Проблема тогда возможно в том, что вы эту функцию вызываете через perform, а функция возвращать должна record. В постгресе нет возможности вернуть в результате функции одно, а через out параметры еще что-то (как, например в Oracle). В постгресе в out параметрах как бы конкретизируются названия и типы полей возвращаемых в record.
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385634
Agers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__kK,
Спасибо. А что тогда в return указать ?
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385641
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agers,

вот похожий пример в доке
Пример 41.9. Портирование функции, создающей другую функцию, из PL/SQL в PL/pgSQL:

https://postgrespro.ru/docs/postgrespro/9.6/plpgsql-porting.html#plpgsql-porting-ex3
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385661
Agers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__kK,

Спасибо ! Разобрался.
...
Рейтинг: 0 / 0
Работа с выходными параметрами функций в PostgreSQL
    #39385899
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex__kK,

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


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