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