我想问一下当使用OpenXML解析XML时如何在SQL Server中抛出错误。以下是Microsoft的一个示例:
Insert Into Employee
SELECT EmployeeId, FirstName, LastName
FROM OPENXML (@hdoc, '/NewDataSet/Employee',1)
WITH (EmployeeId Integer, FirstName varchar(100), LastName varchar(100)) XMLEmployee
Where XMLEmployee.EmployeeId Not IN (Select EmployeeID from Employee)
如果根节点存在但其中没有Employee,该怎么办?
由于
答案 0 :(得分:0)
试试这个 -
DECLARE @XML XML
SELECT @XML = '<NewDataSet></NewDataSet>'
IF NOT EXISTS(
SELECT 1
WHERE @XML.exist('/NewDataSet/Employee') = 1
) RAISERROR('Employee not exists', 16, 1)
完整答案(可能是错误的答案,因为我需要看到XML结构) -
DECLARE @XML XML
SELECT @XML = '<NewDataSet></NewDataSet>'
IF NOT EXISTS(
SELECT 1
WHERE @XML.exist('/NewDataSet/Employee') = 1
) RAISERROR('Employee not exists', 16, 1)
INSERT INTO dbo.Employee (EmployeeId, FirstName, LastName)
SELECT
t.c.value('@EmployeeId', 'INT')
, t.c.value('@FirstName', 'VARCHAR(100)')
, t.c.value('@LastName', 'VARCHAR(100)')
FROM @XML.nodes('/NewDataSet/Employee') t(c)
WHERE t.c.value('@EmployeeId', 'INT') NOT IN (
SELECT EmployeeID
FROM dbo.Employee
)