¿Cómo se asigna el resultado de una llamada exec a una variable en SQL? Tengo un proc almacenado llamado up_GetBusinessDay
, que devuelve una única fecha.
¿Se puede hacer algo como esto:
exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1
Siempre utilizo el valor de retorno para devolver el estado de error. Si necesita devolver un valor, yo usaría un parámetro de salida.
ejemplo de procedimiento almacenado, con un parámetro OUTPUT:
CREATE PROCEDURE YourStoredProcedure
(
@Param1 int
,@Param2 varchar(5)
,@Param3 datetime OUTPUT
)
AS
IF ISNULL(@Param1,0)>5
BEGIN
SET @Param3=GETDATE()
END
ELSE
BEGIN
SET @Param3='1/1/2010'
END
RETURN 0
GO
llamada al procedimiento almacenado, con un parámetro OUTPUT:
DECLARE @OutputParameter datetime
,@ReturnValue int
EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT
PRINT @ReturnValue
PRINT CONVERT(char(23),@OutputParameter ,121)
OUTPUT:
0
2010-01-01 00:00:00.000
Esto funcionará si desea simplemente devolver un número entero:
DECLARE @ResultForPos INT
EXEC @ResultForPos = storedprocedureName 'InputParameter'
SELECT @ResultForPos
De la documentación (suponiendo que se utilice SQL-Server):
USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO
Así que sí, debería funcionar así.