powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Не могу найти ошибку.
5 сообщений из 5, страница 1 из 1
Не могу найти ошибку.
    #34665766
Hektor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибку возвращяет следующая ХП:

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
-- <ScriptOptions statementTerminator="@" />
DROP PROCEDURE DASUSR1.TECHNOLUX_MAIN_PAGE@
CREATE PROCEDURE DASUSR1.TECHNOLUX_MAIN_PAGE(OUT MAIN_PAGE CLOB(200K))
LANGUAGE SQL
BEGIN ATOMIC
	DECLARE MP_NUM INT;
	DECLARE TEMPLATE_NUM INT;
	DECLARE TEMPLATE_XML XML;
	DECLARE HEADER_CLOB CLOB(4k);
	DECLARE FOOTER_CLOB CLOB(4k);
	DECLARE PAGE_CLOB CLOB(4k);
	DECLARE tracefile VARCHAR( 255 ) DEFAULT '/var/XML/test1.html';
	
	DECLARE RC_E INT;
	DECLARE STMT_E VARCHAR( 4096 );
	DECLARE STMT VARCHAR( 1000 );
	
	DECLARE SQLCODE INT default  0 ;
	DECLARE C1 CURSOR FOR S1;
	DECLARE UNDO handler for sqlexception
		BEGIN
			SET RC_E=SQLCODE;
			INSERT INTO DASUSR1.ERROR_LOG VALUES (DATE(CURRENT DATE), TIME(CURRENT TIME), RC_E, STMT_E);
		END;
	
-- ПОЛУЧАЕМ НОМЕР ГЛАВНОЙ СТРАНИЦЫ
	select XT.MP INTO MP_NUM FROM DASUSR1.PROJECTS T, xmltable('$c/project[@id="1"]' PASSING T.PROJECT AS "c" COLUMNS "MP" INT PATH '@main_page') XT;
-- ВЫДЕРГИВАЕМ НОМЕР ШАБЛОНА ДЛЯ СТРАНИЦЫ
	SET STMT ='select XT.TPL FROM DASUSR1.PAGES T, xmltable(''$c/page[@id="'||RTRIM(CHAR(MP_NUM))||'"]'' PASSING T.PAGE AS "c" COLUMNS "TPL" INT PATH ''@template'') XT';
	PREPARE S1 FROM STMT;
	OPEN C1;
	FETCH C1 INTO TEMPLATE_NUM;
	CLOSE C1;
	
	SET STMT_E = 'FETCH C1 INTO HEADER_CLOB, FOOTER_CLOB;';
-- строим xml код ИЗ ШАБЛОНА;
	SET STMT = 'SELECT T.HEADER, T.FOOTER FROM DASUSR1.TEMPLATES T WHERE (XMLQUERY(''$c/template[@id="'||RTRIM(CHAR(TEMPLATE_NUM))||'"]'' PASSING T.TEMPLATE AS "c" )) IS NOT NULL';
	PREPARE S1 FROM STMT;
	OPEN C1;
	FETCH C1 INTO HEADER_CLOB, FOOTER_CLOB;
	CLOSE C1;
	
	SET HEADER_CLOB = '<?xml version="1.0" encoding="utf-8"?><page>'||HEADER_CLOB||FOOTER_CLOB||'</page>';
	
	SET STMT_E = 'FETCH C1 INTO PAGE_CLOB;';
-- ПОЛУЧАЕМ XSL КОД СТРАНИЦЫ;	
	SET STMT = 'SELECT T.PAGE_CODE FROM DASUSR1.PAGES T WHERE (XMLQUERY(''$c/page[@id="'||RTRIM(CHAR(MP_NUM))||'"]'' PASSING T.PAGE AS "c" )) IS NOT NULL';
	PREPARE S1 FROM STMT;
	OPEN C1;
	FETCH C1 INTO PAGE_CLOB;
	CLOSE C1;
	
	SET PAGE_CLOB = '<?xml version="1.0" encoding="utf-8"?>'||PAGE_CLOB;
	SET STMT_E = 'XSLTRANSFORMTOCLOB';
-- Передаем на обработку SAXON
	SELECT DASUSR1.XSLT2ToClob(HEADER_CLOB, PAGE_CLOB, tracefile) INTO MAIN_PAGE FROM sysibm.SYSDUMMY1;
END@

В таблице логов ошибка -443.
возникает на строке:
Код: plaintext
SELECT DASUSR1.XSLT2ToClob(HEADER_CLOB, PAGE_CLOB, tracefile) INTO MAIN_PAGE FROM sysibm.SYSDUMMY1;


Вот пример на 100% рабочей процедуры.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DROP PROCEDURE DASUSR1.TEC@
CREATE PROCEDURE DASUSR1.TEC(OUT MAIN_PAGE CLOB(8K))
LANGUAGE SQL
BEGIN
	DECLARE MP CLOB(4K);
	DECLARE TE CLOB(4K);
	
	SET MP = '<Здесь XML код, который мы передаем функции = HEADER_CLOB>';
	SET TE = '<Здесь XSL код, который мы передаем функции = PAGE_CLOB>';
	SELECT DASUSR1.XSLT2ToClob(MP, TE, '/var/XML/tec.log') INTO MAIN_PAGE FROM SYSIBM.SYSDUMMY1;
end@

По сути в обеих случаях функция получает одно и то же, но в первом случае возвращает ошибку.
Помогите, пожалуйста, найти где подвох.
________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
Не могу найти ошибку.
    #34665963
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лог-файл
/var/XML/test1.html
что содержит после ошибки?
...
Рейтинг: 0 / 0
Не могу найти ошибку.
    #34665968
Hektor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet.  1  error detected.
	at net.sf.saxon.PreparedStylesheet.prepare(PreparedStylesheet.java: 153 )
	at net.sf.saxon.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java: 137 )
	at SaxonXSLT.XSLTransformToClob(SaxonXSLT.java: 30 )

________________________________________________________
________________________________________________________
...
Рейтинг: 0 / 0
Не могу найти ошибку.
    #34666039
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит, в PAGE_CLOB с точки зрения saxon - кривой stylesheet...
...
Рейтинг: 0 / 0
Не могу найти ошибку.
    #34666251
Hektor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinЗначит, в PAGE_CLOB с точки зрения saxon - кривой stylesheet...
НО ВО ВТОРУЮ ПРОЦЕДУРУ Я ПОДСТАВЛЯЮ ЗНАЧЕНИЯ HEADER_CLOB И PAGE_CLOB,
КОТОРЫЕ ПОЛУЧАЮ, ПОДСТАВИВ ВМЕСТО

Код: plaintext
SELECT DASUSR1.XSLT2ToClob(HEADER_CLOB, PAGE_CLOB, tracefile) INTO MAIN_PAGE FROM sysibm.SYSDUMMY1;

Код: plaintext
SET MAIN_PAGE = HEADER_CLOB;
И
Код: plaintext
SET MAIN_PAGE = PAGE_CLOB;

РЕЗУЛЬТАТ -> ВПОЛНЕ ВАЛИДНЫЙ HTML КОД. И НИКАКИХ ОШИБОК.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Не могу найти ошибку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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