选择Cast(Scope_identity)并执行标量

时间:2011-11-15 14:35:43

标签: c# sql

为什么这不起作用?我得到一个错误,说这个数字不能无穷大。但是,我不得不从插入语句中删除它,以便它不会发布两次条目。 我必须在哪里加入这段代码才能让我的代码作为新ID循环?

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

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

1 个答案:

答案 0 :(得分: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