これは、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ドキュメントにこれらのタグが1つしかない場合でも、心配する必要はありません。SPは正常に動作します。問題は、ネストされた<GLJournal>
タグが2つある場合に発生します。xmlは次のようになります。
<GLJournal>
<SomeTag/>
<SomeTag2/>
<GLJournal>12345</GLJournal>
</GLJournal>
ネストされたタグの5桁の値を取得するにはどうすればよいですか?(常に5桁になります)try catchを使用することを考えましたが、それはエレガントな解決策のようには思えません。
編集:また、問題の一部は、タグ
が1つまたは2つになる時期がわからないことです。GlJournal