我有一个要求,我必须将多行插入到不同的表中。
首先我想检查角色是否存在于一个表中,然后我必须将值插入到role
表中,然后插入到相关表中。
在这里我担心的是我必须得到roleid
它是否正在插入并且roleid
只有我会插入这些值。
这一切都应该在单击和单个存储过程中完成。
等待回复。
提前致谢 。
我有一个要求,我必须将多行插入到不同的表中。
首先我想检查角色是否存在于一个表中,然后我必须将值插入到role
表中,然后插入到相关表中。
在这里我担心的是我必须得到roleid
它是否正在插入并且roleid
只有我会插入这些值。
这一切都应该在单击和单个存储过程中完成。
等待回复。
提前致谢 。
就像@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))