ошибка при вызове хранимой процедуры Oracle #757999


#0 by Sponger
Все привет. Есть проблема. Вызываю хранимую процедуру Oracle, но выдает ошибку. Ругается на параметры, но не могу догнать в чем беда. Помогите плиз. не понимаю что надо передать в p_rates Попытка Connection.ConnectionString = "моя строка подключения"; Исключение Предупреждение("Не удалось создать подключение!"); КонецПопытки;
#1 by Sponger
Ошибка ORA-06550: строка1, столбец7: PLS-00306: ошибочно число или типы аргументов при обращении к GET_RATE ORA-06550: строка1, столбец7 PL/SQL: Statement ignored
#2 by mistеr
> не понимаю что надо передать в p_rates Сказано же - курсор. В 1С такого зверя нет. Получить его можно в PL/SQL или, если хитро извернуться, в программе на C++. Если переформулировать для блондинок, эта хранимка не предназначена для вызова из 1С.
#3 by Sponger
т.е. хранимку надо переписать чтобы она возвращала курсор не в параметр?
#4 by Sponger
ПЕРЕФРАЗИРУЮ надо переписать чтобы возвращала не курсор, а таблицу (набор записей, RECORDSET) c Oracle впервые пытаюсь вытащить что-то
#5 by mistеr
Да, сделать обертку-функцию.
#6 by Sponger
она должна делаться в Oracle?
#7 by Sponger
а вот такой вариант делал ктонить? - Установить (ИМХО лучше на сервере mssql) клиента Oracle - Настроить ODBC к Oracle - в mssql настроить Linked Servers к ораклу - написать хранимку в mssql, которая будет принимать ваши параметры и транслировать в хранимку на оракле, возвращая вам результат. ИЛИ делать выборку из представления... - в оракле написать хранимку по сбору нужных данных или представление, из которого сиквеловский скрипт будет селектить данные (в зависимости от условий - возможно это даже предпочтительней) В Oracle для меня никто не будет ничего переписывать. Потому надо найти выход.
#8 by МихаилМ
сделайте обертку - psql скрипт. и вызывайте не хранимую процедуру , а комманду - скрипт , который будет вызвать хранимую процедуру.
#9 by Sponger
я и спрашиваю. Обертку в Oracle делать?
#10 by Sponger
примеры не скинете ссылку?
#11 by mistеr
Можно попробовать в анонимном блоке. Код хранимки есть?
#12 by Sponger
Завтра попробую код хранимки взять
#13 by Sponger
с кодом засада. Не будет кода. Только вызов и входящие параметры. я уже написал их.
#14 by Sponger
примеры не скинете или ссылку на описание как делать?
#15 by Repey
Это у тебя все же процедура или функция? Дай пример вызова прямо из оракла.
#16 by Sponger
процедура. Ораклоиды код не дают. Первый раз Оракл вижу, и надо получить данные. Вот все что есть.
#17 by mistеr
Единственное, что могу сказать. Если бизнесу нужны эти данные в 1С, все административные препятствия преодолеваются на раз. Выходи на заинтересованных лиц и решай вопрос. Иногда кодер должен на минутку становиться манагером.
#18 by Repey
То есть это процедура, и она тебе возвращает курсор "p_rates"?
#19 by Sponger
да.
#20 by Repey
Сколько полей на выходе должно получиться? Ориентировочное количество записей?
#21 by Sponger
В курсоре сейчас        CURR_ID    RATE    FROMDATE    CURRENCYCODE    TEXT    ISOCODE 1    1    273,53    08.10.2015 23:59:59    USD    Американский доллар    840
#22 by Sponger
блин, нет форматирования. Получается 6 полей.
#23 by Repey
А записей сколько? Если немного - можно собрать результат в строку с разделителями, а на стороне 1С уже разобрать ее. Иначе вижу только вариант с временной таблицей. В любом случае, считаю, это будет лучше, чем доп. звено добавлять. Развивать тему?
#24 by Sponger
может в личку? пока в курсоре у меня 1 запись. Но мне надо понять механизм. В дальнейшем будет много. Я бы не отказался от обоих вариантов и с разделителями и с временной таблицей.
#25 by Sponger
вот код хранимки select * from table(pkg_1c_api.get_rate(p_lastdate => to_date('01.10.2015','dd.mm.yyyy')))
#26 by mistеr
Вот и делай такой же select, через Statement.
#27 by Sponger
что есть Statement? Как мне его из 1С организовать?
#28 by Мэс33
#29 by Мэс33
#30 by mistеr
Не, Statement это я напутал. Тот же Command, только с другим CommandType.
#31 by Sponger
спрасибо.          вот так заработало. Правда у меня в курсоре 1 строка. Щас проверю с набором строк.
#32 by Sponger
да. Таким методом я получаю набор строк, но работаю только с первой строкой набора. Как получить все строки?
#33 by Sponger
Протупил. НаборЗаписей.moveNext работает.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

Похожие вопросы 1С

В этой группе 1С