Определение хранимой процедуры:
CREATE PROCEDURE MYSCHEMA.LOAD_ETL ( )
LANGUAGE JAVA
SPECIFIC MYSCHEMA.LOAD_ETL
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'ETL!loadETL'
PARAMETER STYLE JAVA ;
В System i Navigator мне предоставлены разрешения на чтение и выполнение.
Файл класса Java копируется и компилируется в de AS / 400 в / QIBM / UserData / OS400 / SQLLib / Function / ETL.CLASS .
Когда я пытаюсь выполнить хранимую процедуру с помощью call MYSCHEMA.LOAD_ETL()
, я получаю сообщение об ошибке:
[SQL4303] Хранимая процедура Java или имя пользовательской функции, конкретное имя spec-name не может быть идентифицировано из строки внешнего имени.
Объяснение: В операторе CREATE PROCEDURE или CREATE FUNCTION, который объявил эту хранимую процедуру или пользовательскую функцию, было неправильно отформатированное предложение EXTERNAL NAME. Внешнее имя должно быть отформатировано следующим образом: "package.subpackage.class! Method".
Итак, я изменил класс на com.mycompany.ETL
. И скопировал и перекомпилировал его внутри AS / 400 в / QIBM / UserData / OS400 / SQLLib / Function / com / mycompany / ETL.class .
И я воссоздаю хранимую процедуру:
CREATE PROCEDURE MYSCHEMA.LOAD_ETL ( )
LANGUAGE JAVA
SPECIFIC MYSCHEMA.LOAD_ETL
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'com.mycompany.ETL!loadETL'
PARAMETER STYLE JAVA ;
Однако это все еще не работает.
Теперь ошибка:
SQL0551. ID авторизации не имеет привилегии для выполнения операции над именем объекта.
В System i Navigator я предоставил разрешения на чтение и выполнение файла класса Java в / QIBM / UserData / OS400 / SQLLib / Function / ETL.CLASS .
Я получаю
CPFA0A9 (объект не найден): /QIBM/UserData/OS400/SQLLib/Function/com.mycompany.ETL.class
Итак, я упаковал его в файл jar и скопировал в / QIBM / UserData / OS400 / SQLLib / Function / etl.jar .
Я заново создал хранимую процедуру, но она все равно не работает.
Затем я воссоздаю хранимую процедуру снова:
CREATE PROCEDURE MYSCHEMA.LOAD_ETL ( )
LANGUAGE JAVA
SPECIFIC MYSCHEMA.LOAD_ETL
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'com/mycompany/ETL!loadETL'
PARAMETER STYLE JAVA ;
Еще раз, это все еще не работает.
Заранее спасибо за помощь.