我正在向我的数据库添加数据,但想检索自动生成的 UnitID。
using (SqlConnection connect = new SqlConnection(connections))
{
SqlCommand command = new SqlCommand("ContactInfo_Add", connect);
command.Parameters.Add(new SqlParameter("name", name));
command.Parameters.Add(new SqlParameter("address", address));
command.Parameters.Add(new SqlParameter("Product", name));
command.Parameters.Add(new SqlParameter("Quantity", address));
command.Parameters.Add(new SqlParameter("DueDate", city));
connect.Open();
command.ExecuteNonQuery();
}
...
ALTER PROCEDURE [dbo].[Contact_Add]
@name varchar(40),
@address varchar(60),
@Product varchar(40),
@Quantity varchar(5),
@DueDate datetime
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO DBO.PERSON
(Name, Address) VALUES (@name, @address)
INSERT INTO DBO.PRODUCT_DATA
(PersonID, Product, Quantity, DueDate) VALUES (@Product, @Quantity, @DueDate)
END
最佳答案
为您的过程添加一个输出参数:
@new_id int output
在插入语句之后,为其赋值:
set @new_id = scope_identity()
将其添加到您的调用代码中:
command.Parameters.Add("@new_id", SqlDbType.Int).Direction = ParameterDirection.Output;
并检索值:
int newId = Convert.ToInt32(command.Parameters["@new_id"].Value);
关于sql - 如何从存储过程返回插入记录的 IDENTITY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595278/