|
DB2XMLFUNCTIONS.XMLUPDATE Косячит
#34607604
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
|
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.
CREATE PROCEDURE UPDATE_PROJECT()
LANGUAGE SQL
BEGIN ATOMIC
DECLARE RC INT;
DECLARE stmt VARCHAR( 4096 );
DECLARE SEQ_1 INT;
DECLARE SEQ_2 INT;
DECLARE SEQ_3 INT;
DECLARE UPD VARCHAR( 255 ); DECLARE SQLCODE INT default 0 ;
DECLARE UNDO handler for sqlexception
BEGIN
SET RC=SQLCODE;
INSERT INTO DASUSR1.ERROR_LOG VALUES (DATE(CURRENT DATE), TIME(CURRENT TIME), RC, stmt);
END;
-- Получаем автоинкремент
VALUES NEXTVAL FOR project_seq into SEQ_1;
VALUES NEXTVAL FOR page_seq into SEQ_2;
VALUES NEXTVAL FOR template_seq into SEQ_3;
-- Меняем значения project_id и т.п. на автоинкременты
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/project/@id">', CAST(CAST(SEQ_1 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/project/@main_page">', CAST(CAST(SEQ_2 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/page/@id">', CAST(CAST(SEQ_2 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/page/@project">', CAST(CAST(SEQ_1 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/page/@template">', CAST(CAST(SEQ_3 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/template/@id">', CAST(CAST(SEQ_3 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
SET UPD = CONCAT('<updates><update action="replace" col="1" path="/projects/template/@project">', CAST(CAST(SEQ_1 AS CHAR( 6 )) AS VARCHAR( 6 )));
SET UPD = CONCAT(UPD, '</update></updates>');
Call DB2XMLFUNCTIONS.XMLUPDATE (UPD,'Select TMP from DASUSR1.TEMP','update DASUSR1.TEMP set TMP=?',RC,stmt);
END @
CALL UPDATE_PROJECT()@
Данный код полностью снес всё что было в базе данных, вплоть до схем...
В чем дело?
|
|
|