Добрый день.Вставить XML в SQL Server
В настоящее время я сделал небольшую демонстрацию с XML на сервере SQl.
У меня есть таблица с именем: tb_xml_demo(ID, Name, Descr)
И каждый раз, когда я вставляю в эту таблицу. ID колонки, как это:
001, 002, 003 ....
Это моя процедура
alter proc sp_xml_demo_cud
@p_xml xml
as
begin
declare @dochandle int;
exec sp_xml_preparedocument @dochandle output,@p_xml;
insert into tb_xml_demo(id, name, descr)
select
(select
format(isnull(convert(int, max(id)), 0) + 1, '000')
from tb_xml_demo) id,
name,
descr
from
OPENXML(@dochandle,'/root/item',2)
with
(name nvarchar(50),
descr nvarchar(50),
crud varchar(1)
)
end;
И это мой XML:
exec sp_xml_demo_cud
'<root>
<item>
<name>9876543</name>
<descr>1sdfsd</descr>
</item>
<item>
<name>333</name>
<descr>333</descr>
</item>
</root>';
И это результат после выполнения процедуры:
id Name Descr
001 9876543 1sdfsd
001 333 333
Пожалуйста, помогите мне.
Большое спасибо.
помочь вам с чем? Здесь нет никаких вопросов! – HoneyBadger
Вопрос не совсем понятен - но я думаю, его проблема в том, что оба его идентификатора выходят «001». Это происходит из-за конвертирования (int, max (id)) + 1 бит ... конечно, который назначит одинаковый идентификатор для каждой строки в партии, и даже если вы вставляете строки по отдельности, это действительно ужасный способ делать вещи , Просто используйте идентификатор int и позвольте серверу генерировать ваши идентификаторы! – beercohol
Боковое примечание: вы не должны ** использовать префикс 'sp_' для ваших хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –