Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Работа с выходными параметрами функций в PostgreSQL / 10 сообщений из 10, страница 1 из 1
16.01.2017, 16:14
    #39385561
Agers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с выходными параметрами функций в PostgreSQL
Господа, подскажите пожалуйста. Требуется хранимая функция, которая выдает на вход несколько строковых параметров. В 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
16.01.2017, 16:23
    #39385568
Alex__kK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с выходными параметрами функций в PostgreSQL
Agers,

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

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

А если 'IBS_OSB_WS' привести к varchar явно?
типа 'IBS_OSB_WS'::varchar ?
...
Рейтинг: 0 / 0
16.01.2017, 16:56
    #39385601
Agers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с выходными параметрами функций в PostgreSQL
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
16.01.2017, 17:18
    #39385620
Alex__kK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с выходными параметрами функций в PostgreSQL
Agers,

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

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

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

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

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


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