Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / XQuery запрос и данные XML / 2 сообщений из 2, страница 1 из 1
02.09.2009, 12:50
    #36174481
Shim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XQuery запрос и данные XML
Привет всем.
Вот постала необходимость разобратся с db2.
Написал тестовый пример.
Создал БД и подключился к ней через jdbcTemplate. Все работает нормально.
Создал 1 таблицу
table1
ID - BIGINT
VALUE - varchar(10)
XMLDOC - XML

У меня возникли 2 вопроса:
1. Можно ли сделать так. чтоб к таблице обращатся без схемы.
Т.е. вместо
SELECT * FROM SHEMA."TABLE1";
использовать
SELECT * FROM "TABLE1";

2. Никак не плучется вытащить данные из XML документа.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
	public void testXQuery(String table){
		//String sql = "select ID, XMLQUERY('for $e in $t/config/commands/command return $e/help/text()' passing  t.xmldoc as \"t\") from " + table + " t";
		String sql = "select ID, XMLQUERY('for $e in $t/config return $e/commands' passing  t.xmldoc as \"t\") from " + table + " t"; 
		List<Map<String, Object>> list = getJdbcTemplate().queryForList(sql);
		showList(list);
	}
	
	public void showList(List<Map<String, Object>> list){
		
		for (Map<String, Object> object : list) {
			Set<String> keySet = object.keySet();
			for (String key : keySet) {
				System.out.print(key + ": ");
				System.out.print(object.get(key));
				System.out.print("\t");
			}
			System.out.println();
			try {
				DB2Xml xmlval = (DB2Xml)object.get("XMLDOC");
				if(null != xmlval){
//					xmlval.
					System.out.println(xmlval.isDB2XmlClosed());
					System.out.print(xmlval.getDB2String());
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
Вместо ожидаемого результата в xmlval.getDB2String() я получаю ошибку. Если выполнить этот запрос в GUI DB2 то все выводится верно. Так что запрос правильный. Как можно открыть этот DB2Xml (com.ibm.db2.jcc.DB2Xml)?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ID:  1 	VALUE: ew	XMLDOC: com.ibm.db2.jcc.am.ie@cd6aa0	
true
com.ibm.db2.jcc.am.SqlException: [jcc][ 10120 ][ 11689 ][ 3 . 57 . 82 ] Invalid operation: DB2Xml is closed. ERRORCODE=- 4470 , SQLSTATE=null
	at com.ibm.db2.jcc.am.bd.a(bd.java: 660 )
	at com.ibm.db2.jcc.am.bd.a(bd.java: 60 )
	at com.ibm.db2.jcc.am.bd.a(bd.java: 94 )
	at com.ibm.db2.jcc.am.ie.d(ie.java: 264 )
	at com.ibm.db2.jcc.am.ie.s(ie.java: 197 )
	at com.ibm.db2.jcc.am.ie.getDB2String(ie.java: 106 )
	at database.JDBCTemplate.showList(JDBCTemplate.java: 64 )
	at database.JDBCTemplate.getAllObjects(JDBCTemplate.java: 23 )
	at pack1.Main.main(Main.java: 23 )
...
Рейтинг: 0 / 0
03.09.2009, 12:31
    #36176518
BuryCommoner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XQuery запрос и данные XML
1. Попробуйте выполнить команду после подключения:
Код: plaintext
SET CURRENT SCHEMA = schema_name
где schema_name - название схемы, которая будет использована при обращении к таблицам без схемы.
2. Можно попробовать в тексте запроса XML-поле обернуть в XMLSERIALIZE с приведением, например в VARCHAR.

---------------------------------------------------------
IS NULL OR NOT IS NULL
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / XQuery запрос и данные XML / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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