Valori di ritorno non sono generalmente utilizzati per "ritorno" di un risultato, ma per tornare successo (0) o un numero di errore (1-65K). Quanto sopra sembra indicare che sp_executesql non restituisce un valore, che non è corretto. sp_executesql restituirà 0 per il successo e qualsiasi altro numero per il fallimento.
In seguito, @i tornerà 2727
DECLARE @s NVARCHAR(500)
DECLARE @i INT;
SET @s = 'USE [Blah]; UPDATE STATISTICS [dbo].[TableName] [NonExistantStatisticsName];';
EXEC @i = sys.sp_executesql @s
SELECT @i AS 'Blah'
SSMS mostrerà questa Msg 2727, livello 11, stato 1, riga 1 Non riesci a trovare l'indice 'NonExistantStaticsName'.
my sp sarà sp_executesql @myQuery – JohnIdol
'@ retvalOUT = @ retval OUTPUT'? Il terzo parametro di 'sp_executesql' non dovrebbe essere solo' @retval OUTPUT'? –
Ho capito! Opzionalmente accetta il nome del parametro. –