Есть процедура загрузки данных из 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 вставляет данные успешно. Почему так происходит?