Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 XQuery запрос и данные XML  [new]
Shim
Member

Откуда:
Сообщений: 106
Привет всем.
Вот постала необходимость разобратся с db2.
Написал тестовый пример.
Создал БД и подключился к ней через jdbcTemplate. Все работает нормально.
Создал 1 таблицу
table1
ID - BIGINT
VALUE - varchar(10)
XMLDOC - XML


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

2. Никак не плучется вытащить данные из XML документа.
	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)?
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)
2 сен 09, 12:50    [7607674]     Ответить | Цитировать Сообщить модератору
 Re: XQuery запрос и данные XML  [new]
BuryCommoner
Member

Откуда:
Сообщений: 177
1. Попробуйте выполнить команду после подключения:
SET CURRENT SCHEMA = schema_name
где schema_name - название схемы, которая будет использована при обращении к таблицам без схемы.
2. Можно попробовать в тексте запроса XML-поле обернуть в XMLSERIALIZE с приведением, например в VARCHAR.

---------------------------------------------------------
IS NULL OR NOT IS NULL
3 сен 09, 12:31    [7612586]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить