¿Es posible asignar a la variable un valor devuelto por el procedimiento almacenado de exec?set @var = exec stored_procedure
Algo así como
DECLARE @count int
SET @count = Execute dbo.usp_GetCount @Id=123
¿Es posible asignar a la variable un valor devuelto por el procedimiento almacenado de exec?set @var = exec stored_procedure
Algo así como
DECLARE @count int
SET @count = Execute dbo.usp_GetCount @Id=123
Se puede utilizar en lugar de sp_executesql
exec
para asignar a los parámetros de salida escalares
DECLARE @out int
EXEC sp_executesql N'select @out_param=10',
N'@out_param int OUTPUT',
@[email protected] OUTPUT
SELECT @out
Para exec
sólo soy consciente de cómo hacerlo usando una tabla de variables
declare @out table
(
out int
)
insert into @out
exec('select 10')
select *
from @out
Para pro almacenado Además, también utilizará un parámetro output
o un código de retorno. Este último solo puede devolver un entero único y generalmente se prefiere para devolver códigos de error en lugar de datos. Ambas técnicas se demuestran a continuación.
create proC#foo
@out int output
as
set @out = 100
return 99
go
declare @out int, @return int
exec @return = #foo @out output
select @return as [@return], @out as [@out]
drop proC#foo
gracias. Quiero hacer algo como esto en mi SP; CON XMLNAMESPACES (DEFAULT 'http://abc.com') SET @out = (SELECT XmlResult.value ('count (// subject/subject)', 'int') FROM @XmlTable) Pero obtengo un error de sintaxis. Esto me está volviendo loco – BumbleBee
Use 'SELECT @out = XmlResult.value' para asignarlo a una variable escalar. –
Gracias. Veo el mensaje (1 Filas afectadas) pero no los resultados con SELECt @out = xmlResult.Value ... ¿Cómo puedo ver los resultados? – BumbleBee
Si utiliza RETURN en el proc
DECLARE @count int
EXECUTE @count = dbo.usp_GetCount @Id=123
parámetro OUTPUT
DECLARE @count int
EXECUTE dbo.usp_GetCount @Id=123, @count OUTPUT
redirigir los resultados a la tabla temporal/tabla de variables
DECLARE @count int
DECLARE @cache TABLE (CountCol int NOT NULL)
INSERT @cache EXECUTE dbo.usp_GetCount @Id=123
SELECT @count = CountCol FROM @cache
No se puede asignar un conjunto de registros del proceso almacenado directamente a una variable escalar
Como de costumbre muchas maneras de hacer esto, pero la más fácil es:
DECLARE @count int
Execute @count = dbo.usp_GetCount @Id=123
Sí, esto funcionará, pero si no quiere que lo hagamos, ingrese el valor de conteo y simplemente úselo. Esto no funcionará. – Abe
pregunta yopur pregunta por 'exec @ sql' pero el ejemplo que da a las llamadas de un procedimiento almacenado. ¿Que necesitas? –