Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вызов пользовательской функции / 2 сообщений из 2, страница 1 из 1
13.04.2011, 08:39
    #37213339
Rust()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов пользовательской функции
Перевожу java код с Oracle на DB2, столкнулся с проблемой вызова пользовательской функции.
есть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION GET_DB_VERSION(  )
	RETURNS INTEGER
	SPECIFIC GET_DB_VERSION
	NO EXTERNAL ACTION
F1: BEGIN ATOMIC
	RETURN  1 ;
END
вызываю в коде:
Код: plaintext
1.
2.
3.
4.
5.
	String sql = "{? = call GET_DB_VERSION()}";
	CallableStatement cs = getConnection().prepareCall(sql);
	cs.registerOutParameter( 1 , Types.INTEGER);
	cs.execute;
	version = cs.getInt( 1 );
выдает ошибку что не может найти процедуру. В Oracle такое работало, в примерах интернета тоже типа работает, в чем затык DB2?
Версия DB2 8.2
...
Рейтинг: 0 / 0
13.04.2011, 09:33
    #37213425
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов пользовательской функции
Rust()... в чем затык DB2?
Версия DB2 8.2В db2 вы не можете делать call функции, только процедуры.
Поэтому, вы можете:

Код: plaintext
1.
2.
3.
4.
5.
CREATE  PROCEDURE  GET_DB_VERSION( OUT P1 INT )
	SPECIFIC GET_DB_VERSION
	NO EXTERNAL ACTION
F1: BEGIN ATOMIC
	SET P1=1;
END
и в коде
Код: plaintext
String sql = "{call GET_DB_VERSION( ? )}";

либо для вашей функции:

Код: plaintext
1.
2.
3.
4.
String sql = "values get_db_version()";
Statement st = ((Connection) conn).createStatement();
ResultSet rs = st.executeQuery(sql);
rs.next();
version = rs.getInt(1);
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вызов пользовательской функции / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]