1

複数の行を異なるテーブルに挿入する必要があるという要件があります。

まず、ロールが1つのテーブルに存在するかどうかを確認したいので、値をroleテーブルに挿入してから、関連するテーブルに挿入する必要があります。

ここで私の懸念はroleid、それが挿入されているかどうかを取得する必要があり、それroleidだけで値を挿入することです。

これはすべて、1 回のクリックと 1 回のストアド プロシージャで実行する必要があります。

返事を待っています。

前もって感謝します 。

4

1 に答える 1

0

@dasblinkenlight が述べたように、マージ機能を使用して挿入または更新を実行できるため、再度説明する必要はありません。

私があなたの質問を正しく理解していれば、単一のストアド プロシージャを使用して複数の行を異なるテーブルに挿入する必要があります (1 回の呼び出しでオブジェクト グラフ全体を永続化するようなものです)。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 に答える