CREATE PROCEDURE [dbo].[usp_insertRoomType]
@TypeName nvarchar(50), ----类型名称
@TypePrice decimal(18,2) ----该类型的房间的价格
/*
Function:插入一个房间类型
Date:2009-8-28
*/
AS
IF NOT EXISTS (SELECT * FROM RoomType WHERE TypeName = @TypeName)
BEGIN
INSERT INTO RoomType(TypeName,TypePrice)
VALUES(@TypeName,@TypePrice);
END
SELECT @@IDENTITY
上面这个是在Sql Server中的存储过程
我在visio studio中做项目,调用这个存储过程进行插入,
--我怎样在不修改存储过程的情况下,在插入成功后得到@@IDENTITY 得到它的编号呢?
--我知道修改存储过程设置返回值,就可以得到
--但我不想这样做,想在visio studi写代码时,当显示插入成功后得到这个值
如果你想在 Visual Studio 中调用存储过程并获取返回值,你可以使用 SqlCommand 的 ExecuteScalar 方法来执行存储过程,然后将返回值转换为相应的数据类型。
例如,你可以使用以下代码来调用上面的存储过程并获取返回值:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("usp_insertRoomType", connection))
{
command.CommandType = CommandType.StoredProcedure;
// 添加存储过程的参数
command.Parameters.AddWithValue("@TypeName", typeName);
command.Parameters.AddWithValue("@TypePrice", typePrice);
// 执行存储过程并获取返回值
object returnValue = command.ExecuteScalar();
// 将返回值转换为相应的数据类型
int roomTypeId = Convert.ToInt32(returnValue);
}
}
注意,你还需要将上面的代码放在 try-catch 块中,以便在发生异常时进行处理。