Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Исходящий параметр ХП на java / 3 сообщений из 3, страница 1 из 1
21.12.2011, 07:49
    #37586118
BuryCommoner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исходящий параметр ХП на java
Здравствуйте.
Пишу хранимую процедуру в IBM Data Studio 3.1 на Java. СУБД DB2 Express-C 9.7.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE QUERY_TO_XML ( OUT P_XML CLOB(100K),
                                OUT P_MESSAGE VARCHAR(1024) )
	NOT DETERMINISTIC
	LANGUAGE Java
	EXTERNAL NAME 'ALEX.DS_20111215135943:com.ntk.plus.common.query_to_xml.x_query_to_xml'
	FENCED
	THREADSAFE
	PARAMETER STYLE JAVA



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class query_to_xml {
	public static void x_query_to_xml(Clob[] p_xml, String[] p_message) throws SQLException,
			Exception {
		Connection con = DriverManager.getConnection("jdbc:default:connection");
		if (p_xml[0] == null) {
			p_message[0] = "null";
		} else {
			p_message[0] = "not null";
		}
	}
}



Проблема в том, что не могу записать данные в исходящий параметр p_xml. При входе там лежит null, а как создать экземляр, реализующий java.sql.Clob не знаю.

---------------------------------------------------------
IS NULL OR NOT IS NULL
...
Рейтинг: 0 / 0
21.12.2011, 12:16
    #37586566
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исходящий параметр ХП на java
BuryCommoner,

Здравствуйте.

Код: plaintext
1.
2.
3.
4.
CREATE PROCEDURE QUERY_TO_XML ( OUT P_XML CLOB(100K),
                                OUT P_MESSAGE VARCHAR(1024) )
...
PARAMETER STYLE DB2GENERAL
...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
import COM.ibm.db2.app.*;

public class query_to_xml extends StoredProc {
	public static void x_query_to_xml(COM.ibm.db2.app.Clob p_xml, String p_message) throws SQLException,
			Exception {
	 	COM.ibm.db2.app.Clob res = COM.ibm.db2.app.Lob.newClob();
	 	java.io.Writer w = res.getWriter();
                ...
	 	set(1, res);
                set(2, p_message);
                w.close();
	}
}


P.S.:

Можно, конечно, и в PARAMETER STYLE JAVA создавать CLOB, но для этого надо будет в процедуре сначала получать Clob запросом, а потом с ним работать.
Типа:
Код: plaintext
1.
2.
3.
4.
5.
...
  st = con.createStatement();
  rs = st.executeQuery("select clob('') from sysibm.sysdummy1");
  if (rs.next()) c = rs.getClob(1); 
  java.io.Writer w = c.setCharacterStream(1);
...
Только с не ascii-символами проблема будет при таком подходе.

С PARAMETER STYLE DB2GENERAL вам не надо для этого устанавливать соединение с базой.
...
Рейтинг: 0 / 0
22.12.2011, 06:59
    #37588194
BuryCommoner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исходящий параметр ХП на java
Спасибо, всё заработало :)
Может не совсем по теме, но остался один вопрос по Data Studio 3.1. При создании хранимой процедуры она отображает 2 вкладки: DDL и Java. Java свободно редактируется и сохраняется. Вкладка DDL практически полностью генерируется и похоже заточена под PARAMETER STYLE JAVA. Когда я поставил DB2GENERAL значение EXTERNAL NAME при сохранении начало принудительно выставляться в 'common!qUERY_TO_XML' (чушь). В итоге процедура внедряется успешно, но при запуске выдаёт ошибку, что не может найти класс. Помогает самостоятельный вызов CREATE PROCEDURE из центра управления. Это недоработка студии, или неправильное её использование?
DDL:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE QUERY_TO_XML ( OUT P_XML CLOB(100K),
                                OUT P_MESSAGE VARCHAR(1024) )
	NOT DETERMINISTIC
	LANGUAGE Java
	EXTERNAL NAME 'common!qUERY_TO_XML'
	FENCED
	PARAMETER STYLE DB2GENERAL


Java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
package com.ntk.plus.common;

import ...;
import COM.ibm.db2.app.StoredProc;
import COM.ibm.db2.app.Clob;
import COM.ibm.db2.app.Lob;


public class query_to_xml extends StoredProc {
	public void x_query_to_xml(Clob p_xml, String p_message) throws SQLException,
			Exception {
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Исходящий параметр ХП на java / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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