xml 유형의 입력 매개 변수를 수락하여 트랜잭션의 보험 계획 목록을 수락 할 수 있습니다. xml 매개 변수를 가져 와서 테일 변수로 파쇄해야 일부 논리를 처리 할 수 있습니다. XML을 내 테이블 변수에 어떻게 파쇄 할 수 있습니까?xml 입력 매개 변수를 테이블 변수에 파쇄하는 방법
여기에 데이터가있는 샘플 표를 생성하는 스크립트가 있습니다.
/*
CREATE TABLE PlanData(PlanPos INT IDENTITY, PayerDX INT, PlanDX INT, PayPct DECIMAL(6,2))
INSERT PlanData(PayerDX, PlanDX, PayPct)
VALUES(10, 20, 80)
INSERT PlanData(PayerDX, PlanDX, PayPct)
VALUES(25, 50, 10)
drop table PlanData
*/
DECLARE @xmlPlans XML
SET @xmlPlans = (SELECT PlanPos, PayerDX, PlanDX, PayPct
FROM PlanData
ORDER BY PlanPos
FOR XML RAW('plan'), ROOT('plans')
)
print CAST(@xmlPlans AS NVARCHAR(max))
/* We must convert the XML passed in containing all of the insurance payer plan
data into a usable format for the current scoping. */
DECLARE @tblPlans TABLE(PlanPos INT, IPDX INT, IPPDX INT, PayPct decimal(6, 2))
-- /* Note that the table is built in order from Primary through the last plan */
-- INSERT @tblPlans (PlanPos, IPDX, IPPDX, PayPct)
-- SELECT x.item.value('@PlanPos[1]', 'INT') AS PlanPos,
-- x.item.VALUE('@IPDX[1]', 'INT') AS IPDX,
-- x.item.VALUE('@IPPDX[1]', 'INT') AS IPPDX,
-- x.item.VALUE('@PayPct[1]', 'decimal(6, 2)') AS PayPct
-- FROM @xmlPlans.nodes('//items/item') AS x(item)
INSERT @tblPlans (PlanPos, IPDX, IPPDX, PayPct)
SELECT T.plann.value('@PlanPos', 'int') AS PlanPos
,T.plann.VALUE('@PayerDX', 'INT') AS IPDX
,T.plann.VALUE('@PlanDX', 'INT') AS IPPDX
,T.plann.VALUE('@PayPct', 'decimal(6, 2)') AS PayPct
FROM @xmlPlans.nodes('plans/plan') as T(plann)
---- Attribute-centered XML
--DECLARE @data XML
--SET @data = '<data><customer id="1" name="Allied Industries"/><customer id="2" name="Trades International"/></data>';
--
--DECLARE @tblCust TABLE(id INT, [name] VARCHAR(20))
--
--
---- Using the value() method
--INSERT @tblCust (id, [name])
--SELECT T.customer.value('@id', 'INT') AS customer_id,
-- T.customer.value('@name', 'VARCHAR(20)') AS customer_name
--FROM @data.nodes('data/customer') AS T(customer);
--
--SELECT id AS dx, name AS CustName FROM @tblCust
-- SELECT x.item.value('@PlanPos[1]', 'INT') AS PlanPos,
-- x.item.VALUE('@IPDX[1]', 'INT') AS IPDX,
-- x.item.VALUE('@IPPDX[1]', 'INT') AS IPPDX,
-- x.item.VALUE('@PayPct[1]', 'decimal(6, 2)') AS PayPct
-- FROM @xmlPlans.nodes('//items/item') AS x
SELECT
p.PlanPos AS PlanPos,
p.IPDX AS IPDX,
p.IPPDX AS IPPDX,
p.PayPct AS PayPct
FROM @tblPlans p
나에게도 실패한 시도가 표시됩니다.
이브라이언에게,
코드 또는 XML을 게시하는 경우 ** 텍스트 편집기에서 해당 행을 강조 표시하고 편집기 툴바에서 "코드"버튼 (101 010)을 클릭하여 멋지게 형식을 지정하고 구문을 강조 표시하십시오! –
팁을 주셔서 감사합니다 –