Tengo una pieza de SQL dinámico que necesito ejecutar, luego necesito almacenar el resultado en una variable.
Sé que puedo usar, sp_executesqlpero no puedo encontrar ejemplos claros sobre cómo hacer esto.
tsql
dynamic-sql
JohnIdol
fuente
fuente

@retvalOUT=@retval OUTPUT? ¿No deberíasp_executesqlser justo el tercer parámetro de la@retval OUTPUT?EXEC sp_executesql @sSQL, @ParmDefinition, @retval OUTPUT;fuente
insert into @tab. Si intentainsert into @tabejecutar múltiplesexecute sp_executesql, con diferentes sql,select * from @tabsolo muestra los resultados de la primera ejecuciónfuente
Declarar @variable int
Exec @variable = nombre_proc
fuente
Los valores de retorno generalmente no se usan para "devolver" un resultado, sino para devolver el éxito (0) o un número de error (1-65K). Todo lo anterior parece indicar que sp_executesql no devuelve un valor, que no es correcto. sp_executesql devolverá 0 para el éxito y cualquier otro número para el fracaso.
En el siguiente, @i devolverá 2727
SSMS mostrará este mensaje 2727, nivel 11, estado 1, línea 1 No se puede encontrar el índice 'NonExistantStaticsName'.
fuente
DECLARE @ValueTable TABLE (Valor VARCHAR (100))
fuente
Si desea devolver más de 1 valor, use esto:
los valores devueltos están en @retIndex y @retText
fuente
Aquí hay algo que puedes probar
fuente
Esto fue hace mucho tiempo, por lo que no estoy seguro de si todavía es necesario, pero podría usar la variable @@ ROWCOUNT para ver cuántas filas se vieron afectadas con la instrucción sql anterior.
Esto es útil cuando, por ejemplo, construye una instrucción de actualización dinámica y la ejecuta con exec. @@ ROWCOUNT mostraría cuántas filas se actualizaron.
Aquí está la definición
fuente
Esto funcionó para mí:
fuente