У меня есть таблица, содержащая запрос формата 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 как:
<?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>
мне нужна процедура магазина, так что я могу отправить 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 (запрос из-за '')? – Shnugo
@Shnugo: Поле xmlRequest - тип VARCHAR. – Somu
Почему вы хотите использовать хранимую процедуру, если вы делаете не что иное, как * чтение * данных? Используйте TVF или VIEW ... И далее: ваш пример не очищает, что вы ищете. Псевдокод даже не компилировался. Какие параметры вы проходите? – Shnugo