Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行Sql Server存储过程并获取输出插入值_C#_Sql Server - Fatal编程技术网

C# 执行Sql Server存储过程并获取输出插入值

C# 执行Sql Server存储过程并获取输出插入值,c#,sql-server,C#,Sql Server,我想在插入记录时得到插入的行键 CREATE PROCEDURE Temp AS BEGIN SET NOCOUNT ON insert into Farmer_landDetails (oth_mas_key, fmr_key, anim_typ_key, anim_count, land_type_key, land_availability) OUTPUT INSERTED.oth_det_key values(1,1,1,1,1,1) END GO 如何使用C获取此输出

我想在插入记录时得到插入的行键

CREATE PROCEDURE  Temp
AS
BEGIN
    SET NOCOUNT ON
insert  into Farmer_landDetails 
(oth_mas_key,
fmr_key,
anim_typ_key,
anim_count,
land_type_key,
land_availability) OUTPUT INSERTED.oth_det_key values(1,1,1,1,1,1) 
END
GO

如何使用C获取此输出值?

StoredProcess的Output子句返回一行和一个值。 因此,获得结果的正确方法是通过SqlCommand的ExecuteScalar方法

using(SqlConnection cnn = new SqlConnection(....))
using(SqlCommand cmd = new SqlCommand("Temp", cnn))
{
   cnn.Open();
   cmd.CommandType = CommandType.StoredProcedure;
   int result = Convert.ToInt32(cmd.ExecuteScalar());
}

注意,我不知道oth_det_key是什么数据类型。我假设是一个整数,因此ExecuteScalar的返回值为Convert.ToInt32

为什么不选择插入后插入的行呢?在这些列中是否有主键?请使用ExecuteScalarhave查看从C执行此命令