hay tres maneras de usar: el valor de retorno, y el parámetro de salida y un conjunto de resultados
También, ten cuidado si utilice el patrón: SELECT @Variable=column FROM table ...
si hay múltiples filas devueltas de la consulta, su @Variable solo contendrá el valor de la última fila devuelta por la consulta.
VALOR DEVUELTO
ya que la consulta devuelve un campo int, por lo menos en función de cómo lo nombró. se puede utilizar este truco:
CREATE PROCEDURE GetMyInt
(@Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
y ahora llamar a su procedimiento, tales como:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
esto sólo funcionará para intercepciones, porque RETORNO sólo puede devolver un solo valor int y los nulos se convierten en un cero .
parámetro de salida
puede utilizar un parámetro de salida:
CREATE PROCEDURE GetMyInt
(@Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
y ahora llamar a su procedimiento, tales como:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
Los parámetros de salida sólo puede devolver un valor, pero puede ser cualquier tipo de datos
RESULTADO DE CONFIGURACIÓN para un conjunto de resultados que el procedimiento sea como:
CREATE PROCEDURE GetMyInt
(@Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
usarlo como:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
conjuntos de resultados pueden tener muchas filas y muchas columnas de cualquier tipo de datos
Parece un poco Es difícil elegir la "mejor" respuesta cuando varios responden a su pregunta como se le preguntó. Elegí la más detallada aquí. Gracias. – David