Herkese iyi günler.SQL Server'a XML ekle
Şu anda SQl Server'da XML ile küçük bir demo hazırladım.
Ben isimde tablo vardır: tb_xml_demo(ID, Name, Descr)
Ve her seferinde bu tabloya eklediğinizde. Böyle kimliği sütunu:
001, 002, 003 ....
Bu benim prosedür
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;
Ve bu benim xml geçerli:
exec sp_xml_demo_cud
'<root>
<item>
<name>9876543</name>
<descr>1sdfsd</descr>
</item>
<item>
<name>333</name>
<descr>333</descr>
</item>
</root>';
Ve bu işlemleri yaptıktan sonra neden olduğu:
id Name Descr
001 9876543 1sdfsd
001 333 333
Lütfen bana yardım edin.
Çok teşekkürler.
Yardım sizi? Burada soru yok! – HoneyBadger
Sorun hiç açık değil - ama bence problemi her iki kimliğinin de "001" çıkması. Bunun nedeni, dönüştürme işleminin (int, max (id)) + 1 bit ... 'i, tabanda her satır için aynı kimliği atayacak olmasıdır ve satırları tek tek ekleseniz bile gerçekten bir şeyler yapmanın gerçekten korkunç bir yoludur. . Sadece bir kimlik int kullanın ve sunucunun kimliğinizi oluşturmasına izin verin! – beercohol
Yan not: saklı yordamlarınız için ** sp_' öneki kullanmamalısınız **. Microsoft [kendi kullanımı için öneki ayırmıştır (bkz. * Kayıtlı Yordamları İsme *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) ve Gelecekte bazen bir isim çatışması riskiyle karşı karşıyasınız. [Ayrıca saklı yordam performansınız için de kötüdür] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Sadece 'sp_''den kaçınmak ve önek olarak başka bir şey kullanmak ya da hiç bir önek kullanmamak en iyisidir! Farklı durumda –