zergon321
@zergon321

Почему не происходит загрузка данных из xml-файла?

Есть процедура загрузки данных из xml-файла в таблицу, использующая функции XPath:
DELIMITER $

CREATE PROCEDURE insert_xml(IN xml_file_name TEXT)
COMMENT "INSERTS INTO CLIENTS"
BEGIN
    DECLARE xml_file TEXT;
    DECLARE counter INT UNSIGNED DEFAULT 1;
    DECLARE size INT UNSIGNED DEFAULT ExtractValue(xml_file, "count(//row)");
    
    SET xml_file = LOAD_FILE(xml_file_name);
    
  IF xml_file IS NULL THEN
		SET @last_error = CONCAT("Couldn't load file ", xml_file_name);
		CALL non_existent();
	END IF;
    
  WHILE counter <= size DO
		INSERT INTO CLIENTS(id, num)
        VALUES
        	(
        	ExtractValue(xml_file, "//row[$counter]/id"), 
        	ExtractValue(xml_file, "//row[$counter]/num")
        	);
		SET counter = counter + 1;
	END WHILE;
END$


Вот сам xml-файл:
<?xml version = "1.0" encoding = "utf-8"?>

<resultset>
	<row>
		<id>80</id>
		<num>81</num>
	</row>

	<row>
		<id>81</id>
		<num>81</num>
	</row>
</resultset>


Определение таблицы:
CREATE TABLE `CLIENTS` (\n  `id` int(10) unsigned zerofill NOT NULL,\n  `num` bigint(20) NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Процедура завершается успешно, но новые данные в таблицу не вставлены. При этом LOAD XML LOCAL INFILE вставляет данные успешно. Почему так происходит?
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ответы на вопрос 1
вообще исходя из этой конструкции "//row[$counter]/id" должны быть элементы < row1 >, < row2 >, ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы