Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие СУБД > External JAVA UDF в DB2


Автор: NEt_Hunter 27.11.2010, 16:19
Приветствую! Уже который день бьюсь над этой проблемой. Помогите решить ее. Опишу пошагово свои действия. 
1. Создаю файл WrkDays.java со след. содержимым:

Код


import java.sql.*;
public class WrkDays
{
public static void wrkDays (int initialDate) throws SQLException {

Connection con = DriverManager.getConnection("jdbc:default:connection"); 
PreparedStatement stmt = null;
String sql = "SELECT COUNT(*) FROM AYAZ WHERE NUMBER = ?";
stmt = con.prepareStatement(sql);
stmt.setInt(1, initialDate);
ResultSet rs = stmt.executeQuery();

if (stmt != null) stmt.close();
  if (con != null) con.close();  

  return; }
}


2. Далее успешно компилируется в WrkDays.class, который помещаю на всякий случай в оба каталога:

cp WrkDays.class /home/db2ins45/sqllib/function/WrkDays.class
cp WrkDays.class /home/db2ins45/sqllib/function/unfenced/WrkDays.class

3. Создаю функцию, которая также успешно  выполняется в db2:
CREATE FUNCTION HELLOWORLD25 (INTEGER) 
RETURNS INTEGER 
EXTERNAL NAME   'WrkDays.wrkDays' 
LANGUAGE JAVA 
PARAMETER STYLE JAVA 
DETERMINISTIC 
READS SQL DATA 
NO EXTERNAL ACTION

4. Наконец при попытке вызова db2 "VALUES(HELLOWORLD25(50))" получаю ошибку:
specific name "SQL101127135050700" could not call
Java method "wrkDays", signature "(I)I".  SQLSTATE=42724

Предполагаю что signature "(I)I связан с используемыми типами данных. Но не могу понять в чем:( Очень надеюсь на ваши советы. Спасибо!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)