【关于.net存储过程】

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 块中,以便在发生异常时进行处理。