我已經編寫了一個存儲過程,它將通過xml進行查詢,並根據傳遞給它的Xpath返回值。我給了一個虛擬的XML數據來調試。存儲過程被創建,但是當我調試它時,它說必須聲明標量變量@xml
。我不知道我要去哪裏錯。在SQL Server中使用Xpath
我在分享存儲過程代碼以獲取更多參考。
spXML
'Gender','''/CreateAndSendMessageRequest/CompositionRequest/PolicyDetails
/MainPolicyHolder/PolicyHolderDetails'''
ALTER PROCEDURE spXML
@lasttag VARCHAR(50),
@root VARCHAR(MAX)
AS
BEGIN
Declare @xml xml
Set @xml = '<?xml version="1.0" encoding="utf-8"?>
<CreateAndSendMessageRequest>
<CompositionRequest>
<Metadata>
<PolicyReference>250028766622DN</PolicyReference>
<AccountReference>Test1234</AccountReference>
<QuoteReference>Test3214</QuoteReference>
<OutboundTransactionID>string</OutboundTransactionID>
<InboundActivityID>string</InboundActivityID>
<DocumentName>DocumentA127</DocumentName>
<DocumentID />
<CommunicationID>C004</CommunicationID>
<CorrelationID>PC: 20c14f9b-2a1b-45dc-b680-52ffceb86d05</CorrelationID>
<ContentType>string</ContentType>
<isSensitive>true</isSensitive>
<isReadOnly>true</isReadOnly>
<isDocumentInbound>true</isDocumentInbound>
<ChannelIdentifier>POST</ChannelIdentifier>
<BrandType>string</BrandType>
<SchemeNameCode>string</SchemeNameCode>
<isNotificationRequiredIndicator>false</isNotificationRequiredIndicator>
<DocumentPriorityIndicator>Standard</DocumentPriorityIndicator>
<SpecialInstructions>
<Code>string</Code>
<Description>string</Description>
</SpecialInstructions>
<SupressIndicator>false</SupressIndicator>
<OutsortIndicator>string</OutsortIndicator>
<DocumentIncludes>
<DocumentId DocumentTitle="string">string</DocumentId>
</DocumentIncludes>
<CreatedBy>string</CreatedBy>
<UpdatedBy>string</UpdatedBy>
<FulfilledDateTime>2017-05-15T07:41:13</FulfilledDateTime>
<UploadedDateTime>2013-12-21T17:02:42+05:30</UploadedDateTime>
<RequestDateTime>2016-01-01T19:07:42</RequestDateTime>
<UpdateDateTime>2012-01-07T19:42:56</UpdateDateTime>
</Metadata>
<PolicyDetails>
<PolicyReference>string</PolicyReference>
<QuoteReference>string</QuoteReference>
<PolicyVersionStartDate>2009-11-03</PolicyVersionStartDate>
<MainPolicyHolder>
<PolicyHolderDetails>
<Title>string</Title>
<Initials>string</Initials>
<Honours>string</Honours>
<Firstname>string</Firstname>
<Surname>string</Surname>
<FullName>string</FullName>
<Gender>F</Gender>
<DateOfBirth>2018-04-13</DateOfBirth>
</PolicyHolderDetails>
</PolicyDetails>
</CompositionRequest>
<VersionInfo majorVersion="1" minorVersion="19" />
</CreateAndSendMessageRequest>'
Declare @tag varchar(max)
set @tag = 'Select X.T.value(''('[email protected]+')[1]'',''varchar(50)'') as Result
From @xml.nodes('[email protected]+') as X(T)'
print @tag
Execute(@tag)
End
如果刪除'@ xml'的大部分內容,你會得到同樣的錯誤嗎?我想知道,如果這是一個字符串格式問題,你有一個額外的'''在xml的地方(很難看到與當前的格式) – DiskJunky
我已編輯它相應 – Ksingh