Я разработал хранимые процедуры в 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 возвращаемых столбцов.
Как исправить эту ошибку?
Заранее благодарим за понимание.