Хранимые процедуры Oracle и OUT параметры

используемый продукт Terrasoft CRM x25 (3.2.0.21)

Предпосылки
Пытаюсь использовать хранимую процедуру Oracle с возвращаемыми параметрами

Вызов средствами террасофт
var Parameters = System.CreateObject('TSObjectLibrary.Parameters');
var ReturnParameter = Parameters.CreateItem();
ReturnParameter.Name = 'P1';
ReturnParameter.ParamType = 2;
ReturnParameter.DataType = pdtInteger;
ReturnParameter.Value = 53;
Parameters.Add(ReturnParameter);
var ReturnParameter2 = Parameters.CreateItem();
ReturnParameter2.Name = 'P2';
ReturnParameter2.ParamType = 2;
ReturnParameter2.DataType = pdtString;
Parameters.Add(ReturnParameter2);
var SQL = 'begin select PKG_DOCUTILS.Test1( :pP1 ) into :pP2 from dual; end;';
try {
Connector.DBEngine.ExecuteCustomSQL(SQL, Parameters);
} catch (e) {
Log.Write(1, e.message);
}

Пакет oracle 10.2

PACKAGE PKG_DOCUTILS
IS
FUNCTION Test1 (t1 IN OUT NUMBER)
RETURN VARCHAR2;
END; -- Package spec

PACKAGE BODY PKG_DOCUTILS
IS
FUNCTION Test1 (t1 IN OUT NUMBER)
RETURN VARCHAR2
IS
BEGIN
t1 := 123;
RETURN 'begin - ' || TO_CHAR (t1) || ' - test-ok';
END;
END;

При выполнении появляется ошибка
"ORA-06572: Функция TEST1 имеет внешний аргумент ORA-06512: на line 1"

Собственно вопрос
Как воспользоваться функциональностью описанной в статьях?
http://community.terrasoft.ua/node/2171
http://terrasoft.com.ua/sdk/_InputOutputParamTypeEnum.html

Нравится

2 комментария

спасибо
поменял функцию на процедуру и
var SQL = 'begin PKG_DOCUTILS.Test1( :pP1 ); end;';

Показать все комментарии