Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да вмъкнете xml данни в таблица в sql сървър 2005

Ако приемем XML проба, както по-горе:

<Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Emp>
        <ID>3</ID>
        <EmpName>Dibyendu</EmpName>
        <Sal>3500</Sal>
    </Emp>
</Record>

Приемайки следната таблица:

CREATE TABLE Employee
(
    [ID] [int] NOT NULL,  
    [EmpName] varchar(max) NOT NULL,   
    [Sal] [int] NULL
)

Следната съхранена процедура, която използва xpaths, трябва да свърши работа

CREATE PROCEDURE AddEmployee
    @empXml xml
AS

INSERT INTO Employee
(
    ID,
    EmpName,
    Sal
)
VALUES
(
    @empXml.value('(/Record/Emp/ID)[1]', 'int'),
    @empXml.value('(/Record/Emp/EmpName)[1]', 'varchar(max)'),
    @empXml.value('(/Record/Emp/Sal)[1]', 'int')
)

Което след това можете да изпълните с:

exec AddEmployee '<Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Emp><ID>3</ID><EmpName>Dibyendu</EmpName><Sal>3500</Sal></Emp></Record>' 

Ще трябва да направите малко рефакторинг, ако XML записът може потенциално да включва множество „Emp“ елементи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поведение на уникален индекс, колона varchar и (празни) интервали

  2. Не може да се разреши конфликтът на съпоставяне между SQL_Latin1_General_CP1_CI_AS и Latin1_General_CI_AS в операция равна на

  3. Вмъкване на резултати от съхранена процедура от свързан сървър

  4. Възможно ли е окончателно да се определи дали дадена DML команда е била издадена от съхранена процедура?

  5. Как да извадите 30 дни от текущата дата с помощта на SQL Server