xmlフォーマット要求を含むテーブルがあります。例えばのために :ストアプロシージャでXML解析を行う方法
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のために、我々は複数の要求を持つことができます。
XMLリクエストスキーマは同じですが、値が異なります。私は店の手続きを必要とする
<?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>
ので、私は(私はXMLリクエストに検索することができます)API_id、および値を送信し、アイテムの値に基づいて、XML要求を取得することができますよう XML要求があります。
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;
だから私の質問は
Set @xmlRequest = SELECT xmlRequest FROM Api_request
WHERE Api_id = @Api_id
我々は複数の結果を取得する場合場合は、次の反復処理することが可能でしょうか?はいの場合、私はどのように効率的ですか?
複数の@xmlRequestをApi_idとして返す方法は同じですか?
このような種類のシナリオでは、どなたでも作業できますか?私を助けてください。
あなたのテーブルのXMLはすでにXML型であるか、このVARCHARです( '<!DOCTYPE ...>'のために尋ねられます)? – Shnugo
@ Shnugo:xmlRequestフィールドはVARCHAR型です。 – Somu
*データを読み取る以外に*何もしないのであれば、なぜストアドプロシージャを使いたいのですか? TVFまたはVIEWを使用してください。さらに、あなたの例は、あなたが探しているものをクリアしません。擬似コードはコンパイルされません。あなたが渡しているパラメータは何ですか? – Shnugo