我的表结构是
CREATE TABLE [dbo].[Emp](
[ID] [int] NOT NULL,
[EmpName] [varchar](50) NOT NULL,
[Sal] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)
在这个emp表中,我想从xml字符串中插入数据
xml是
<Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Emp>
<ID>3</ID><EmpName>Dibyendu</EmpName><Sal>3500</Sal></Emp></Record>
Run Code Online (Sandbox Code Playgroud)
假设这个xml存储在我的存储过程中的一个变量中,我只想插入这个xml,这样在EMP表中结果ID数据将插入到ID列中,EmpName数据将插入到EmpName列中,而Sal数据将插入Sal列.
所以请告诉我如何在商店程序中编写代码.
谢谢
假设XML样本如上:
<Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Emp>
<ID>3</ID>
<EmpName>Dibyendu</EmpName>
<Sal>3500</Sal>
</Emp>
</Record>
Run Code Online (Sandbox Code Playgroud)
假设如下表:
CREATE TABLE Employee
(
[ID] [int] NOT NULL,
[EmpName] varchar(max) NOT NULL,
[Sal] [int] NULL
)
Run Code Online (Sandbox Code Playgroud)
以下使用xpath的存储过程应该可以解决问题
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')
)
Run Code Online (Sandbox Code Playgroud)
然后您可以执行以下操作:
exec AddEmployee '<Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Emp><ID>3</ID><EmpName>Dibyendu</EmpName><Sal>3500</Sal></Emp></Record>'
Run Code Online (Sandbox Code Playgroud)
如果Record XML可能包含多个'Emp'元素,则需要进行一些重构.
| 归档时间: |
|
| 查看次数: |
25991 次 |
| 最近记录: |