AZ93 Ответов: 1

Синтаксический анализ XML SQL и составление таблицы


Ниже приведен код

Я уже проанализировал его в SQL

TimePeriod |AmountType| Сумма| TimePeriod |PlanDescription |ServiceTypesCode |ServiceTypesName |inPlanNetwork coverageLevel
calendar_year |франшиза| 3000 | calendar_year |OPTIONS PPO |30 |health_benefit_plan_coverage |No - применяется к поставщикам услуг вне сети


Но я хочу создать таблицу и сложить их в таблицу, например сделать поле вызова time period, amounttype, Amount

промежуток времени количество amountType planDescription типов служб inPlanNetwork
calendar_year франшиза 3000 опций PPO health_benefit_plan_coverage , 30 No - применяется к поставщикам услуг вне сети
оставшаяся франшиза 0 вариантов PPO health_benefit_plan_coverage , 30 да - применяется к сетевым провайдерам
оставшаяся франшиза 1500 опций PPO health_benefit_plan_coverage , 30 No - применяется к поставщикам услуг вне сети

XML:
<deductibles>
        <eligibilityDate />
        <insuranceType />
        <timeperiod>calendar_year
        <amounttype>Deductible
        <amount>
          <amount>3000
          <currency>USD
        
        <delivery />
        <plandescription>OPTIONS PPO
        <description />
        <messages />
        <servicetypes>
          <name>health_benefit_plan_coverage
          <codex12>30
        
        <procedureId />
        <procedureIdScope />
        <coverageLevel />
        <inplannetwork>No - Applies to out of network providers
      
      <deductibles>
        <eligibilityDate />
        <insuranceType />
        <timeperiod>remaining
        <amounttype>Deductible
        <amount>
          <amount>0
          <currency>USD
        
        <delivery />
        <plandescription>OPTIONS PPO
        <description />
        <messages />
        <servicetypes>
          <name>health_benefit_plan_coverage
          <codex12>30
        
        <procedureId />
        <procedureIdScope />
        <coverageLevel />
        <inplannetwork>Yes - Applies to in network providers
      
      <deductibles>
        <eligibilityDate />
        <insuranceType />
        <timeperiod>remaining
        <amounttype>Deductible
        <amount>
          <amount>1500
          <currency>USD
        
        <delivery />
        <plandescription>OPTIONS PPO
        <description />
        <messages />
        <servicetypes>
          <name>health_benefit_plan_coverage
          <codex12>30
        
        <procedureId />
        <procedureIdScope />
        <coverageLevel />
        <inplannetwork>
Нет - применяется к поставщикам услуг вне сети

Что я уже пробовал:

declare @response nvarchar(max)
declare @responseXML XML 

BEGIN TRY 

	SELECT @responseXML = (select [responseXML] from TABLE where id = 1)

END TRY 
BEGIN CATCH 
	SELECT ERROR_MESSAGE()
END CATCH
select
X.Node.query('./child::node()') As FileList,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/timePeriod[1]','VARCHAR(MAX)') as TimePeriod,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/amountType[1]','VARCHAR(MAX)') as AmountType,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/amount[1]/amount[1]','VARCHAR(MAX)') as Amount,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/timePeriod[1]','VARCHAR(MAX)') as TimePeriod,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/planDescription[1]','VARCHAR(MAX)') as PlanDescription,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/serviceTypes[1]/codeX12[1]','VARCHAR(MAX)') as ServiceTypesCode,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/serviceTypes[1]/name[1]','VARCHAR(MAX)') as ServiceTypesName,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/inPlanNetwork[1]','VARCHAR(MAX)') as inPlanNetwork,
X.Node.value('Response[1]/coverage[1]/deductibles[1]/coverageLevel[1]','VARCHAR(MAX)') as coverageLevel
FROM @responseXML.nodes('Root') X(Node)

pradiprenushe

Вы хотите вставить ответ select query в таблицу?

1 Ответов

Рейтинг:
0

#realJSOP

Почему бы вам просто не использовать DataTable.ReadXML().

В этот момент было бы гораздо проще получить данные в базу данных SQL Server. Для получения дополнительной информации об этом перейдите сюда:

Гугл[^]