powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Получить переменную типа ГЛОБ из Оракла
7 сообщений из 7, страница 1 из 1
Получить переменную типа ГЛОБ из Оракла
    #36961817
kashitsina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Люди, очень прошу - помогите плиз, сама уже всю голову сломала:(

Без отрыва несколько дней изучаю как можно из 1с связаться с Оракл, выполнить там хранимую процедуру и пролучить ответ в виды выходного параметра.
Возникла большая проблема: в хранимой процедуре в выходном параметре выдается ХМЛ строка - переменная типа ГЛОБ (программисты ОРАКЛ говорят, что это просто очень большая стрка, 4000 байт).
Я в 1с устанавлиаю содинение и создаю команду:
Код Соединение = Новый COMОбъект ("adodb.Connection"); Соединение.ConnectionString="driver={oracle in oraclient10g_home1};Data Source=oradb;user ID=samaratest;password=samaratest"; Соединение.CursorLocation = 3; Соединение.Open(); Команда = Новый COMОбъект ("adodb.Command"); Команда.ActiveConnection = Соединение; Команда.CommandType = 4; Команда.CommandText = "P_GET_DOCUMENT";

после этого перечисляю все параметры процедуры и выполняю команду:

Код //передаем число Параметр = Команда.CreateParameter("SESSION_ID",3,1,4,Session_ID); Команда.Parameters.Append(Параметр); //передаем строку Параметр = Команда.CreateParameter("DOC_TYPE",200,1,10,"BSO_MOVE"); Команда.Parameters.Append(Параметр); //выходной параметр типа adLongVarChar Параметр = Команда.CreateParameter("DOC_BODY",201,2,40000); Команда.Parameters.Append(Параметр); //выходной параметр числовой Параметр = Команда.CreateParameter("RET_CODE",3,2,100); Команда.Parameters.Append(Параметр); //выходной параметр строковый Параметр = Команда.CreateParameter("ERR_MSG",200,2,500); Команда.Parameters.Append(Параметр); пРС = Команда.Execute();
Со стороны Оракл процедура выполняется и передает ХМЛ-строку через переменную DOC_BODY, просто 1с не может её считать. Эта ХМЛ строка записывается в переменную типа ГЛОБ (Оракл программисты сказали, что это просто очень длинная строка)

А в 1с в строке пРС = Команда.Execute(); выдается ошибка мол "[Oracle][ODBC][Ora]ORA-06502: PL/SQL: : ошибка преобразования символа в число ошибка числа или значения". Как я понимаю, такая ошибка или из за несовместимости данных, или из за того, что принимающая строка недостаточно большая. я уже в качестве типа параметра DOC_BODY перебрала все возможные строковые типы (отсюда http://www.sql.ru/forum/actualthread.aspx?...1&hl=adodb), все время ругается.

Подскажите, как быть в этой ситуации?
Может быть кто-то сталкивался, и такая ошибка возникает по другим причинам, не из за несовместимости типов?
Может быть через какой то другой компонент, не АДО, подключаться к базе и запускать там процедуру?
Или может быть знатоки связи с Оракл подскажут как можн получить переменную типа ГЛОБ? или какой то другой тип в Оракл, в которуй можно передавать огромную строку?
...
Рейтинг: 0 / 0
Получить переменную типа ГЛОБ из Оракла
    #36962080
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если уменьшить длину строки - все проходит?

А если туже процедуру выполнять из оракла - все проходит?

А если в 1с в региональных настройках поменять значение символа разделителя (. на ,)?
...
Рейтинг: 0 / 0
Получить переменную типа ГЛОБ из Оракла
    #36963168
kashitsina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с,

длину строки не уменьшить, необходимо принимать всю, какая они есть.

на стороне Оракл процедура выполняется, программисты это видят по логам

символ разделителя поменяла - ничего не изменилось. А как это могло повлиять на прием строки?:)
...
Рейтинг: 0 / 0
Получить переменную типа ГЛОБ из Оракла
    #36963201
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется, что ошибка все-таки у вас в коде.
Гляньте на ссылки:
- http://www.firststeps.ru/sql/oracle/r.php?91
- http://all-oracle.ru/content/view/?part=1&id=71
- http://www.sql.ru/forum/actualthread.aspx?tid=113869
...
Рейтинг: 0 / 0
Получить переменную типа ГЛОБ из Оракла
    #36963263
kashitsina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KuzEvМне кажется, что ошибка все-таки у вас в коде.
Гляньте на ссылки:
- http://www.firststeps.ru/sql/oracle/r.php?91
- http://all-oracle.ru/content/view/?part=1&id=71
- http://www.sql.ru/forum/actualthread.aspx?tid=113869

в смысле ошибка на стороне Оракла, в их коде? Или в 1с, при вызове процедуры или обявлении переменных?
...
Рейтинг: 0 / 0
Получить переменную типа ГЛОБ из Оракла
    #36963321
KuzEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой результат вы получаете при запуске кода в SQL Plus (или как он у Вас там называется)?
...
Рейтинг: 0 / 0
Получить переменную типа ГЛОБ из Оракла
    #36967832
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПолучить переменную типа ГЛОБ
Видимо, всё-таки CLOB.

Далее, MS ODBC не поддерживает BLOB типы.
Надо использовать OraOLEDB провайдера и перед выполнением команды включать свойство SPPrmsLOB (после выполнения выключать).
Вот здесь есть примеры.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Получить переменную типа ГЛОБ из Оракла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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