Ho una stored procedure che restituisce un valore. Richiamarlo da altre stored procedure che devono recuperare questo valore. La stored procedure di chiamata si trova all'interno di una transazione, la stored procedure che restituisce il valore (e crea effettivamente il valore e lo memorizza in una tabella che nessun altro proc tocca) non è all'interno della propria transazione, ma farebbe parte della transazione del chiamante.Qual è il modo migliore per assegnare il valore restituito di un processo memorizzato a una variabile in SQL?
La domanda è questa, qual è il modo più efficace per recuperare il valore di ritorno della stored procedure e la memorizzazione in una variabile nel proc chiamata?
Attualmente ho il seguente e mi chiedo se è molto inefficiente?
DECLARE @tmpNewValue TABLE (newvalue int)
INSERT INTO @tmpNewValue EXEC GetMyValue
DECLARE @localVariable int
SET @localVariable = (SELECT TOP 1 newvalue FROM @tmpNewValue)
Non c'è un modo più semplice per farlo? Non è un modo costoso (in termini di prestazioni)?
mio proc memorizzato non ha un parametro di uscita, solo restituisce un valore. Usare un parametro di uscita sarebbe più veloce?
Per quello che vale sto usando MS SQL Server 2005
Interessante, non sapeva che era valido costrutto. Quindi l'esempio che ho dato è la creazione di una tabella temporanea. Quanto sarebbe inefficiente descriverlo, molto o non sarebbe evidente se non fosse chiamato decine di migliaia di volte? – ApplePieIsGood
difficile da dire, la tua tabella è una variabile di tabella quindi dovrebbe essere tutto in memoria. Perché non eseguire un test sul tuo sistema per misurare la differenza tra i due? – JoshBerke