2012-06-22 52 views
1

我有一個要求,我必須將多行插入到不同的表中。不存在多次插入的存儲過程

首先,我想檢查角色是否存在於一個表中,然後我必須將值插入到role表中,然後插入到相關表中。

在這裏,我的關注是我必須得到roleid如果它插入,並與roleid只有我會插入值。

這一切都應該在一次單擊和單個存儲過程中完成。

等待回覆。

在此先感謝。

+1

提供表格結構將有很大幫助。 –

+2

在SQL Server 2008及更高版本中,使用[merge](http://technet.microsoft.com/zh-cn/library/bb510625.aspx)執行「查詢或插入」操作。 – dasblinkenlight

回答

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)) 
+0

其工作良好 – Chinnmayi

+0

樂意幫忙,如果答案符合您的需求,請將答案標記爲正確(答案旁邊的勾號) – Kane