Nano Hash - криптовалюты, майнинг, программирование

Crystal Reports 14.0.2.364 + Oracle 11g Stored Proc + Ошибка подключения ODBC 42000

Я разработал хранимые процедуры в Oracle 11g, и мне нужно получить к ним доступ через Crystal Reports 14.0.2.364. При разработке отчетов я использовал прямое соединение с сервером Oracle (адрес сервера, имя пользователя / пароль, SID, порт и т. Д.), И отчет работал отлично. В качестве ограничения для нашей LMS нам говорят, что мы должны использовать соединения ODBC вместо прямого соединения с Oracle Server, но когда я таким образом подключаю Crystal Report к хранимой процедуре, я получаю постоянную ошибку Error 42000:[Oracle][ODBC] Syntax Error or Access Violation.

Мы дважды проверили драйверы, и мы в курсе. Мы убедились, что в коде нет фактических синтаксических ошибок. Мы проверили, что имя пользователя, в которое мы выполняем вход, имеет правильные привилегии для запуска хранимой процедуры Oracle. Мы проверили, что хранимая процедура выполняется при наличии правильных параметров.

Я вижу то, что не могу объяснить. Отчет состоит из 4 входных параметров и 36 столбцов в наборе записей, который возвращается из хранимой процедуры. В Crystal Reports, когда я добрался до Database > Show SQL Query, я получил следующее:

{CALL "SABA_REPORT"."HDT_CORE_GETDATA_DDS_V110"(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'STR0115', '4260', NULL, 
'course')}

Что показывает 36 возвращенных столбцов как параметры INPUT (чего не должно быть) как значения NULL, а затем 4 входных параметра: 'STR0115', '4260', NULL, 'course', которые указаны правильно.

Итак, я думаю, что есть несоответствие между параметрами, которые передаются в хранимую процедуру, и тем, что ожидает хранимая процедура, генерируя ошибку.

Для справки, вот заголовок хранимой процедуры:

create or replace PROCEDURE HDT_CORE_GETDATA_DDS_V110
 (
      DataReturn IN OUT HDT_CORE_MAIN_V110.CORE_REC_CURSOR
      , ParamOrgCode IN VARCHAR2 DEFAULT NULL
      , ParamCourseNumber IN VARCHAR2 DEFAULT NULL
      , ParamNameKeyword IN VARCHAR2 DEFAULT NULL
      , ParamReportType IN VARCHAR2 DEFAULT 'course'
 )

DataReturn SysRefCursor - это то, что содержит 36 возвращаемых столбцов.

Как исправить эту ошибку?

Заранее благодарим за понимание.


  • Можете ли вы вызвать хранимую процедуру со статическим содержимым из SQLPlus или SQLDeveloper? 19.11.2014
  • Да ... Я проверил, что хранимая процедура работает из SQL Developer, используя значения параметров, введенные вручную. Поступая таким образом, мы получаем ожидаемые результаты. 19.11.2014
  • И вы проверили его выполнение как пользователь, которого CR использует для его запуска, верно? 19.11.2014
  • Правильный. Как внутри SQL Developer, так и при запуске отчета через Crystal Reports. Когда вы создаете соединение, вы должны указать имя пользователя / пароль, так что он такой же, как когда мы запускали его непосредственно внутри SQL Dev. 19.11.2014
  • Итак, драйвер ясен, и Oracle ясен. Где CR передает эти параметры в процедуру? 19.11.2014
  • Из LMS (Саба). Мы регистрируем отчет в пользовательском интерфейсе LMS, и он запрашивает параметры у пользователя во время выполнения. Но мы не можем заставить CR запускать отчет извне LMS, предоставляя параметры вручную. 19.11.2014
  • Похоже, у вас может быть проблема с Сабой. Повторная маркировка. 19.11.2014

Ответы:


1

Мое исследование показало, что файл RPT добавлял много дополнительных столбцов в оператор вызова SQL хранимой процедуры. Это произошло, когда хранимая процедура была выбрана непосредственно из списка доступных хранимых процедур в меню подключения. Итак, я заменил оператор вызова введенным вручную запросом SQL с использованием только правильных параметров, и он сработал. Не уверен, почему в список параметров были добавлены дополнительные столбцы, но справился с этим обходным путем.

20.11.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..