Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / 1С ADO oracle / 2 сообщений из 2, страница 1 из 1
07.08.2009, 14:21
    #36132464
Ralexn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1С ADO oracle
Здравствуйте. Кувыркаюсь второй день пытаюсь запустить процедуру из базы oracle, передать ей входной параметр и получить результат значения двух выходных параметров.
___________
В оракловской базе тестовая сохраненная процедура UDO_P_TEST2 (один входной параметр и два выходных)
create or replace procedure UDO_P_TEST2(innum in integer, firrez out integer, secrez out integer) is
begin
firrez:=innum*11;
secrez:=innum+firrez;
end UDO_P_TEST2;
__________
В 1С прописал процедуру.

Обратите внимание на строку кода где присваиваются параметры сохраненной процедуры.
Если тип переменной и тип параметра указываются символами
prm2 = Cmd.CreateParameter("onnum","integer", "out");
выдается ошибка:
{D:\DB_1C\1С_шк_пит\1SPPrDemo\ExtForms\4_Соединение с ОРАКЛОМ.ert(81)}: Переменная не определена (adParamOutput)

, если тип переменной и тип параметра указываются цифровыми кодами
prm2 = Cmd.CreateParameter(1,3, 2);
ошибки не выдают но параметры не передаются и не выводятся.

Пожалуйста подскажите если можно в чем причина.
Помогите пожалуйста.

//*******************************************
Процедура ОРАКЛ()
//________Соединение с базой данных_____________________________________________
DBC2 = CreateObject("ADODB.Connection");
DBC = CreateObject("ADODB.Connection");
ConnectingString="Provider=OraOLEDB.Oracle;Password=parus;User ID=PARUS;Data Source=MLRZ;Persist Security Info=True";
DBC2.ConnectionString = ConnectingString;
DBC2.Open(ConnectingString);
DBC.ConnectionString = ConnectingString;
DBC.ConnectionTimeOut=600;
DBC.CursorLocation=3;
DBC.Open(ConnectingString);

// Формирование и отправка команды Серверу
Cmd=CreateObject("ADODB.Command");
Cmd.ActiveConnection=DBC;
Cmd.CommandText = "UDO_P_TEST2"; // имя тестовой процедуры
Cmd.CommandType = 4; // "adCmdStoredProc"
Cmd.NamedParameters = "True"; // по умолчанию False

// Объявляем входные параметры
//prm1=Cmd.CreateParameter ("innum","integer","in",ЧислоХ); // ЧислоХ – идентификатор поля ввода Тип данных числовой
prm1=Cmd.CreateParameter (0,3,1,125);
Cmd.Parameters.Append(prm1);

//prm2 = Cmd.CreateParameter("onnum","integer", "out");
prm2 = Cmd.CreateParameter(1,3, 2);
Cmd.Parameters.Append( prm2 );

//Получение и обработка результатов
Cmd.Execute(); //Выполнение и получение набора данных
Сообщить(Cmd.Parameters(0).Value);
Сообщить(Cmd.Parameters(1).Value); //чтение параметра типа OUTPUT после выполнения.

//_______Закрываем соединение с базой данных______________________________
DBC2.Close();
DBC.Close();

КонецПроцедуры
С уважением РАН.

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
07.08.2009, 16:02
    #36132699
Ralexn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
1С ADO oracle
Ура нашел сам ошибку просто забыл дописать одну строчку после ввода входных параметров
// Объявляем входные параметры
prm1=Cmd.CreateParameter ("ttt",129,1,CisloX);
Cmd.Parameters.Append(prm1);
prm1.value=CisloX; // ВОТ этой строчки и не хватало.

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


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