2016-03-30 8 views
0

データベースに挿入して挿入したレコードをコードに戻す必要がある(> 1)レコードがあります(ID列の新しく形成されたIDとともに)。私はPythonコードからSQL Serverにレコードを挿入するための呼び出しを行う必要があります。 私はこれをデータベースへの一回の呼び出しですべて実行したいと思います。どうしたらいいですか?ID列の値を返す

答えて

0

テーブルに複数のレコードを挿入する場合は、INSERTステートメントのOUTPUT句を使用して、新しく挿入されたデータにアクセスできます。ここ

MSDN Documentationは、いくつかのコードを実証することである。

/* Test table to demonstrate */ 
CREATE TABLE Test (ID INT IDENTITY(1, 1), Value VARCHAR(255)); 
GO 
-- I'm using a table valued parameter to pass in the recordset 
CREATE TYPE InputTable AS TABLE (Value VARCHAR(255)); 
GO 

-- Test procedure to demonstrate 
CREATE PROCEDURE dbo.InsertTest 
    @In InputTable READONLY -- Pass in a recordset to insert 
AS 

SET NOCOUNT ON 

-- Create a temp table to return the results 
CREATE TABLE #Test (ID INT, Value VARCHAR(255)); 

-- Insert the data into the test table 
INSERT INTO Test (Value) 
OUTPUT inserted.ID, inserted.Value INTO #Test -- Output the newly inserted records including the new ID into the temp table 
SELECT * 
FROM @In; 

-- Return the inserted data including the new ID 
SELECT * FROM #Test; 

DROP TABLE #Test; 
GO 

-- Declare a variable that references the input 
DECLARE @Input AS InputTable; 

-- Add data to the variable 
INSERT INTO @Input (Value) 
SELECT name 
FROM sys.objects; 

-- Execute the test procedure 
EXEC InsertTest @Input; 
GO 

DROP TABLE Test; 
DROP PROCEDURE InsertTest; 
DROP TYPE InputTable; 
+0

上記のSQLストアド・プロシージャです。 私は、SQL文と値(リストのリスト)を入力として受け付け、挿入されたレコードをPythonで作成したIDと一緒に返すメソッドを実装しようとしています –

+0

これはOUTPUT文の使い方の例です。ストアドプロシージャにラップする必要はありません。 –

関連する問題