如何选择存储过程的返回值? 看起来这将是微不足道的,但是我的SQL不符合标准,我无法理解。我只想从存储过程中选择一个返回的标量。基本上是这样的: select dbo.sProcedure @param DECLARE @SomeReturnValue INT EXEC @SomeReturnValue = SomeProc SELECT @SomeReturnValue

如何选择存储过程的返回值? 看起来这将是微不足道的,但是我的SQL不符合标准,我无法理解。我只想从存储过程中选择一个返回的标量。基本上是这样的: select dbo.sProcedure @param DECLARE @SomeReturnValue INT EXEC @SomeReturnValue = SomeProc SELECT @SomeReturnValue,sql,sql-server,tsql,Sql,Sql Server,Tsql,但这是一个错误。从过程中返回结果集实际上不是一个选项。可以这样做吗,或者我需要开始重写一些代码吗?您应该向sp传递一个可以存储所需返回值的输出参数,或者使用一个标量函数您应该向sp传递一个可以存储所需返回值的输出参数,或者使用一个标量函数诸如此类: select dbo.sProcedure @param DECLARE @SomeReturnValue INT EXEC @SomeReturnValue = SomeProc SELECT @SomeReturnValue 大概是这样的:

但这是一个错误。从过程中返回结果集实际上不是一个选项。可以这样做吗,或者我需要开始重写一些代码吗?

您应该向sp传递一个可以存储所需返回值的输出参数,或者使用一个标量函数

您应该向sp传递一个可以存储所需返回值的输出参数,或者使用一个标量函数

诸如此类:

select dbo.sProcedure @param
DECLARE @SomeReturnValue INT
EXEC @SomeReturnValue = SomeProc
SELECT @SomeReturnValue
大概是这样的:

select dbo.sProcedure @param
DECLARE @SomeReturnValue INT
EXEC @SomeReturnValue = SomeProc
SELECT @SomeReturnValue

@RichardOD有正确的语法,但是正如所暗示的,您不能在select语句中使用它。如果需要在select语句中使用它,请使用函数而不是存储过程。

@RichardOD具有正确的语法,但正如所暗示的,不能在select语句中使用它。如果需要在select语句中使用它,请使用函数而不是存储过程。

请注意,虽然这可以作为SQL查询使用,但如果您在C之类的编程环境中,则有更好的方法获取返回值。Yeap。但是这个问题上没有C标签!这很有趣-我实际上正在使用C来实现这一点,这个解决方案对我来说很好,用这个文本创建一个DbCommand并调用executeScalar。但是有什么更好的方法呢?@Ian:你可以创建一个参数并将方向设置为ParameterDirection.ReturnValue。请注意,虽然这是一个SQL查询,但如果您在C这样的编程环境中,有更好的方法获取返回值.Yeap。但是这个问题上没有C标签!这很有趣-我实际上正在使用C来实现这一点,这个解决方案对我来说很好,用这个文本创建一个DbCommand并调用executeScalar。但是有什么更好的方法呢?@Ian:你可以创建一个参数并将方向设置为ParameterDirection.ReturnValue。