PDA

View Full Version : اضافه کردن داده های xmlبه دیتابیس



nedata
شنبه 12 بهمن 1387, 00:05 صبح
سلام
من می خواهم داده ها را که به صورت xml است به جدول در دیتابیس منتقل کنم.
کد زیر را نوشتم ولی نمی دونم چرا کار نمی کند.
ممنون میشم کمکم کنید.



USE LABS
delete from Vendor
DECLARE @xml_text VARCHAR(4000), @i INT
SELECT @xml_text = '<VENDORDATA>
<VENDOR VID="V001" VSKILL="skill1">
<VNAME>ALI AHMADI</VNAME>
<VPROFILE>MALE</VPROFILE>
<VADDRESS>IRAN</VADDRESS>
<VPHONE>6675467</VPHONE>
<VWEB>WWW.SHOPPING.COM</VWEB>
<VEMAIL>INFO@SHOPPING.COM</VEMAIL>
</VENDOR>
<PROJECT PID="P001" STATUS="COMPELETED">
<PNAME>PROJ</PNAME>
</PROJECT>
<FINANCE>
<BILL>1200</BILL>
<ACCOUNT>2000</ACCOUNT>
</FINANCE>

</VENDORDATA>'
EXEC sp_xml_preparedocument @i OUTPUT, @xml_text
INSERT Vendor
SELECT * FROM
OPENXML(@i, '/VENDORDATA/VENDOR', 2)
WITH (VID char(8) ,
VSkill varchar(200),
VName varchar(200) ,
VProfile varchar(200),
VAddress varchar(200) ,
VPhone varchar(15) ,
VWeb varchar(20) ,
VEmail varchar(20) ,
PId varchar(10) ,
Status varchar(20) ,
PName varchar(30) ,
Bill varchar (10) ,
Account varchar (10)
)
INSERT Vendor
SELECT * FROM
OPENXML(@i, '/VENDORDATA/vendor/PROJECT', 2)
WITH (VID char(8) ,
VSkill varchar(200),
VName varchar(200) ,
VProfile varchar(200),
VAddress varchar(200) ,
VPhone varchar(15) ,
VWeb varchar(20) ,
VEmail varchar(20) ,
PId varchar(10) ,
Status varchar(20) ,
PName varchar(30) ,
Bill varchar (10) ,
Account varchar (10)
)
INSERT Vendor
SELECT * FROM
OPENXML(@i, '/VENDORDATA/vendor/Finance', 2)
WITH (VID char(8) ,
VSkill varchar(200),
VName varchar(200) ,
VProfile varchar(200),
VAddress varchar(200) ,
VPhone varchar(15) ,
VWeb varchar(20) ,
VEmail varchar(20) ,
PId varchar(10) ,
Status varchar(20) ,
PName varchar(30) ,
Bill varchar (10) ,
Account varchar (10) )
EXEC sp_xml_removedocument @i

dzmode
شنبه 12 بهمن 1387, 12:44 عصر
سلام
دوست عزيز اين چند مورد را رعايت كنيد:


1- ... =set @xml_text
2- ( OPENXML(@i, '/VENDORDATA/VENDOR', 1
3-insert into vendor


در قسمت with دستور openxml بايد نوع همان فليدهاي را كه در قسمت xml نوشته ايد ، بياوريد . در حاليكه شما انن كار را انجام نداده ايد.

nedata
شنبه 12 بهمن 1387, 22:00 عصر
ممنون از کمکتون