2011-11-15 5 views
1

なぜこれは機能しませんか?数字が無限大にならないと言うエラーが表示されます。しかし、エントリを2回投稿しないように、これを挿入ステートメントから削除しなければなりませんでした。 コードを新しいIDとしてループさせるために、このコードを組み込む必要があるのはどこですか?一般的にCast(Scope_identity)を選択してカールを実行します

  cmd = new SqlCommand(@"SELECT CAST(scope_identity() as int)", con); 

      int aID = Convert.ToInt32(cmd.ExecuteScalar()); 
+0

どのように示してください。 INSERTを行っています。 Scope_identity()は、同じトランザクション/接続内で呼び出される必要があります。別々に呼び出すと、スコープの実行中に最後に挿入されたIDを必要としません。 –

+0

なぜあなたは正確にインサートから取り除かなければなりませんでしたか?挿入の隣は 'SCOPE_IDENTITY()'の自然な場所です... –

+0

私はInsertステートメントに挿入すると、挿入されているレコードの量をインクリメントするIDループの内側にあります。しかし、これは機能しません。 :/ – kellehbeans

答えて

5

あなたはINSERTを行うと、あなたはここの例で見ることができるよう、outパラメータと最後に挿入アイデンティティを返すストアドプロシージャを持つことができます。http://www.objectreference.net/post/SCOPE_IDENTITY()-return-the-id-from-the-database-on-insert.aspx

CREATE PROCEDURE [dbo].[Customer_Insert] 
    @Name VARCHAR(255), 
    @Email VARCHAR(255), 
    @Phone VARCHAR(255), 
    @CustomerID INT OUTPUT 
AS 
BEGIN 
    INSERT INTO dbo.Customer ([Name], Email, Phone) 
    VALUES (@Name,@Email,@Phone) 

    SET @CustomerID = CAST(SCOPE_IDENTITY() AS INT) 
END 
+0

私はあなたのrefereced記事が好きです。 [リンク](http://www.objectreference.net/post/SCOPE_IDENTITY()-return-the-from-the-database-on-insert.aspx) - スコープのアイデンティティを説明しています –

関連する問題