В моем классе я создал простой метод ниже. Этот класс также имеет основную функцию. Я звоню getRes () из моего хранимого про DB2 c.
public static void getRes() {
System.out.println("Start");
try{
Class.forName("com.ibm.db2.jcc.DB2Driver");
con = DriverManager.getConnection(
"jdbc:db2://url:50003/DB","user","Password");
Statement stmt=con.createStatement();
stmt.executeUpdate("INSERT INTO schema.TEST(ID) VALUES(1)");
} catch(Exception e){
System.out.println(e);
} finally {
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println("End");
}
Я вызываю эту функцию из хранимой DB2 версии pro c.
CREATE OR REPLACE PROCEDURE schema.sp_TEST1()
FENCED
MODIFIES SQL DATA
EXTERNAL NAME 'connection.Connect.getRes()'
LANGUAGE JAVA
PARAMETER STYLE JAVA;
call schema.sp_TEST1()
Эта хранимая процедура успешно выполняется. Но я сомневаюсь, что мой метод выполнен или нет. Поскольку в тестовой таблице после выполнения не делается никаких записей.
Ниже приведены шаги, которые я выполнил для развертывания этого файла JAR. 1. Экспортировал банку из Eclipse. Проверено, если банка работает нормально. 2. Выполнен вызов sqlj.install_jar (). Проверена установка в SYSIBM.SYSJARCONTENTS. 3. Укажите путь к классу при экспорте сервера БД. CLASSPATH = / home / db2inse5 / sqllib / function / jar / SchemaName / JarName.jar 4.создал sp и вызвал sp.
Ожидаемый вывод - запись сделана в таблице тест. Но я не получаю ожидаемого результата, хотя выполнение sp успешно.
updated-20200423 Я попытался зафиксировать часть соединения с базой данных и заменил ее созданием файла на сервере db. Это сработало, поэтому я могу подтвердить, что jar-файл был правильно вызван из SP, и файл jar-файлов работал правильно. Но вышеуказанная часть еще не решена
public static void getRes() {
System.out.println("Start");
File myObj = new File("/opt/filename.txt");
myObj.createNewFile();
}