Sql 从查询返回int

Sql 从查询返回int,sql,dapper,Sql,Dapper,我有下面的过程,它似乎根本不起作用,我正在努力理解如何返回单个变量 CREATE PROCEDURE [dbo].[ManufacturingStages_ReturnNextOrder] @StageType nvarchar(50), @StageRelatedPart int AS Declare @SomeVal int SELECT stageType, stageRelatedPart, @SomeVal = Max(stageOrder)

我有下面的过程,它似乎根本不起作用,我正在努力理解如何返回单个变量

CREATE PROCEDURE [dbo].[ManufacturingStages_ReturnNextOrder]
    @StageType nvarchar(50),
    @StageRelatedPart int
AS
    Declare @SomeVal int

    SELECT stageType, stageRelatedPart, @SomeVal = Max(stageOrder)
    FROM ProductManufacturingStages
    GROUP BY stageType, stageRelatedPart
    HAVING stageType = @StageType AND stageRelatedPart = @StageRelatedPart

    RETURN @SomeVal
我计划使用Dapper调用这个过程,以便从表中获得最后一个已知的stageOrder

DynamicParameters parameters = new DynamicParameters();
parameters.Add("@StageType", "Manufacturing");
parameters.Add("@StageRelatedPart", 8137);
int i = Globals.db.QuerySingle<int>("ManufacturingStages_ReturnNextOrder", parameters, commandType: CommandType.StoredProcedure);
DynamicParameters参数=新的DynamicParameters();
参数.添加(“@StageType”,“Manufacturing”);
添加(“@stageratedpart”,8137);
int i=Globals.db.QuerySingle(“ManufacturingStages\u ReturnNextOrder”,参数,commandType:commandType.StoredProcess);

为了返回stageOrder的值,我需要如何构造过程?通常我会创建一个模型并以这种方式返回它,但我觉得可能有点过头了。

您真正需要的是一个函数,但您也可以将输出参数用于存储过程

CREATE PROCEDURE [dbo].[ManufacturingStages_ReturnNextOrder]
@StageType nvarchar(50),
@StageRelatedPart int, @SomeVal int OUTPUT
AS

SELECT stageType, stageRelatedPart, @SomeVal = Max(stageOrder)
FROM ProductManufacturingStages
GROUP BY stageType, stageRelatedPart
HAVING stageType = @StageType AND stageRelatedPart = @StageRelatedPart

命令对象的参数集合应包括输出参数(使用方向属性)调用后应该包含一个值。

我相信
QuerySingle
希望结果集的类型为
T
-是否尝试使用SELECT@someVal?如果尝试获取单个值,可以尝试使用SELECT TOP 1。。。订购