powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / XQuery запрос и данные XML
2 сообщений из 2, страница 1 из 1
XQuery запрос и данные XML
    #36174481
Shim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Вот постала необходимость разобратся с 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
XQuery запрос и данные XML
    #36176518
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Попробуйте выполнить команду после подключения:
Код: plaintext
SET CURRENT SCHEMA = schema_name
где schema_name - название схемы, которая будет использована при обращении к таблицам без схемы.
2. Можно попробовать в тексте запроса XML-поле обернуть в XMLSERIALIZE с приведением, например в VARCHAR.

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


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