OPENXML

antonych
Дата: 14.01.2009 10:57:58
Подскажите, пожалуйста, где ошибка:
Передаю xml в хранимую процедуру на MSSQL2005:

ALTER PROCEDURE [dbo].[pr_Select_xml] 
AS BEGIN 
SET NOCOUNT ON 
DECLARE @xml varchar(8000) 

SET @xml=' 
<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?> 
<VFPData> 
<aa> 
<idloginer>74</idloginer> 
<loginer>Иванов Иван Иванович</loginer> 
<login>ivanov</login> 
<iddepart>1</iddepart> 
</aa> 
<aa> 
<idloginer>62</idloginer> 
<loginer>Петров Петр Петрович</loginer> 
<login>petrov</login> 
<iddepart>4</iddepart> 
</aa> 
<aa> 
<idloginer>90</idloginer> 
<loginer>Сидоров Сидр Сидорович</loginer> 
<login>sidorov</login> 
<iddepart>5</iddepart> 
</aa> 
</VFPData> 
' 
DECLARE @idxml int 
EXEC sp_xml_preparedocument @idxml OUTPUT, @xml 

SELECT * FROM OPENXML(@idxml, N'/VFPData/aa', 3) 
WITH (idloginer int, 
loginer varchar(200), 
login varchar(200), 
iddepart int) 

EXEC sp_xml_removedocument @idxml 

END 

Но при выполнении этой ХП EXEC pr_Select_xml получаю:
The XML parse error 0xc00ce508 occurred on line number 5, near the XML text " <loginer>".
Что не так с кирилицей в поле loginer?

Спасибо.
Паганель
Дата: 14.01.2009 11:25:20
Что только ни пробовал, никак не могу повторить то о чем Вы говорите
У меня Ваш скрипт на ура отрабатывает (create а не alter, разумеется) и exec 3 записи возвращает
Возможно, у Вас collation какой-то экзотический, больше ничего в голову не приходит...

Да, еще я бы попробовал поудалять из фио символы
и таким себе псевдонаучным бинарным поиском найти символ, который парсеру xml не нравится
^^
Дата: 14.01.2009 11:31:36
Для того что бы можно было повторить Ваш результат, код процедуры в данном случае лучше приложить файлом, я так думаю