1

我有一个要求,我必须将多行插入到不同的表中。

首先我想检查角色是否存在于一个表中,然后我必须将值插入到role表中,然后插入到相关表中。

在这里我担心的是我必须得到roleid它是否正在插入并且roleid只有我会插入这些值。

这一切都应该在单击和单个存储过程中完成。

等待回复。

提前致谢 。

4

1 回答 1

0

就像@dasblinkenlight 所说,您可以使用合并功能进行插入或更新,因此无需再次介绍。

如果我正确理解了您的问题,您希望使用单个存储过程将多行插入不同的表中(就像在一次调用中持久保存整个对象图)。扩展Microsoft提供的示例,您可以使用以下示例代码。

DECLARE @idoc int

DECLARE @doc varchar(1000)
SET @doc ='
<CustomersAndOrders>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00" />
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00" />
</Customer>
</CustomersAndOrders>'

--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

-- Execute a SELECT statement that uses the OPENXML rowset provider.
INSERT INTO [YOUR_TABLE_NAME] ([Column1], [Column2])     
SELECT [CustomerID], [ContactName]
FROM OPENXML (@idoc, '/CustomersAndOrders/Customer',1)
WITH ([CustomerID] varchar(10), [ContactName] varchar(20))

INSERT INTO [YOUR_OTHER_TABLE_NAME] ([Column1], [Column2])     
SELECT [EmployeeID], [OrderDate]
FROM OPENXML (@idoc, '/CustomersAndOrders/Customer/Order',1)
WITH ([EmployeeID]  varchar(10), [OrderDate] varchar(20))
于 2012-06-22T04:19:05.893 回答