Xml biçiminde istek içeren bir tablom var. eg için :Mağaza yordamında xml ayrıştırma nasıl yapılır
Api_id xmlRequest Sent_Time
1 ........ 07-04-2016 10:07:12:345
1 ........ 08-04-2016 10:03:12:345
2 ........ 09-04-2016 10:08:12:345
2 ........ 09-04-2016 10:09:12:345
Api_id için, birden fazla isteği olabilir.
XML istek şeması aynıdır ancak farklı değerleri vardır. Ben mağaza prosedürünü gerek
<?xml version="1.0"?>
<!DOCTYPE PARTS SYSTEM "parts.dtd">
<PARTS>
<TITLE>Computer Parts</TITLE>
<PART>
<ITEM>Motherboard</ITEM>
<MANUFACTURER>ASUS</MANUFACTURER>
<MODEL>P3B-F</MODEL>
<COST> 123.00</COST>
</PART>
</PARTS>
, bu yüzden, (i xml isteğinde arama yapabilirsiniz) API_id ve değeri göndermek ve Öğe değerine dayalı xml isteklerini alabilirsiniz: olarak Xml talebidir.
CREATE PROCEDURE getxmlRequest(
@Api_Id INT
@value
,@xmlRequest VARCHAR(max) out)
AS
BEGIN
Set @xmlRequest = SELECT xmlRequest FROM Api_request
WHERE Api_id = @Api_id
/* here need to iterate over @xmlRequest */
Set @Xmlvalue = SELECT X.R.value ('.','nvarchar (150)')
FROM @xmlRequest.nodes(XPATH) X(R)
if(@XmlValue = @value)
/*Add to result so i can return
/*I want to return all @xmlRequest if we has value from xpath*/
END;
Benim soru
Set @xmlRequest = SELECT xmlRequest FROM Api_request
WHERE Api_id = @Api_id
biz birden sonuç elde olacaksa edin: yineleme mümkün geliyor? Eğer evet ise ne kadar verimli olabilirim?
Api_id'de birden çok @ xmlRequest nasıl döndürülür?
Bu tür bir senaryo üzerinde çalışan herhangi biri var mı? Lütfen bana yardım et.
Tablonuzdaki XML zaten XML yazılıyor mu yoksa bu VARCHAR mı ( ') nedeniyle soruluyor mu? – Shnugo
@Shnugo: xmlRequest alanı VARCHAR türüdür. – Somu
Neden * read * data'dan başka bir şey yapmazsanız saklı bir prosedürü kullanmak istersiniz? Bir TVF veya VIEW kullanın ... Ve dahası: Örneğiniz aradığınız şeyi silmeye değil. Sözde kod bile derleme değildi. Geçirdiğiniz parametreler neler? – Shnugo