【发布时间】:2012-05-09 13:47:07
【问题描述】:
这是我用来从 xml 中获取 5 位数字的存储过程:
CREATE PROCEDURE [dbo].[SP_KINGPRICE_InsertJournalFromPost]
(
@ResponseID bigint,
@TransactionDetailID bigint
)
AS
BEGIN
DECLARE @info as varchar(max) = '', @Reference as varchar(max) = ''
SET @info = (SELECT SUBSTRING(Response, CHARINDEX('<GlJournal>',Response) + 11,5)
FROM SysproIntegration..ifmTransactionDetailResponse
WHERE TransactionDetailResponseID = @ResponseID)
SET @Reference = (SELECT DISTINCT Reference
FROM GenJournalDetail
WHERE Journal = CAST(@info as DECIMAL(5,0)))
INSERT INTO ZJournalRecords
(JournalNumber,Reference)
VALUES (@info,@Reference)
END
XML 有一个这样的标签:
<GLJournal>12345</GLJournal>
如果 XML 文档只有其中一个标签,我不用担心。 SP 工作正常。当有两个嵌套的<GLJournal> 标签时,问题就出现了。 xml 然后看起来像:
<GLJournal>
<SomeTag/>
<SomeTag2/>
<GLJournal>12345</GLJournal>
</GLJournal>
如何获取嵌套标签的 5 位数值? (始终为 5 位数字) 我曾想过使用 try catch,但这似乎不是一个优雅的解决方案。
编辑:
另外,问题的一部分是,我不知道什么时候会有一个GlJournal 标签,或者两个。
【问题讨论】:
标签: sql-server xml stored-procedures substring