Tengo una pieza de SQL dinámico que necesito ejecutar, luego necesito almacenar el resultado en una variable.
Sé que puedo usar, sp_executesql
pero no puedo encontrar ejemplos claros sobre cómo hacer esto.
tsql
dynamic-sql
JohnIdol
fuente
fuente
@retvalOUT=@retval OUTPUT
? ¿No deberíasp_executesql
ser justo el tercer parámetro de la@retval OUTPUT
?EXEC sp_executesql @sSQL, @ParmDefinition, @retval OUTPUT;
fuente
insert into @tab
. Si intentainsert into @tab
ejecutar múltiplesexecute sp_executesql
, con diferentes sql,select * from @tab
solo 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