J'ai une procédure stockée qui retourne une valeur que je l'appelle d'autres procédures stockées qui ont besoin de récupérer cette valeur. La procédure stockée appelant est dans une transaction, la procédure stockée qui renvoie la valeur (et crée réellement la valeur et la stocke dans une table qu'aucun autre proc touche) n'est pas dans sa propre transaction, mais ferait partie de la transaction de l'appelant.Quelle est la meilleure façon d'affecter la valeur renvoyée d'un proc stocké à une variable dans SQL?
La question est la suivante: quel est le moyen le plus efficace de récupérer la valeur de retour de la procédure stockée et de la stocker dans une variable du processus appelant?
Actuellement, j'ai ce qui suit et je me demande si c'est très inefficace?
DECLARE @tmpNewValue TABLE (newvalue int)
INSERT INTO @tmpNewValue EXEC GetMyValue
DECLARE @localVariable int
SET @localVariable = (SELECT TOP 1 newvalue FROM @tmpNewValue)
N'y a-t-il pas une façon plus directe de le faire? N'est-ce pas une manière coûteuse (en termes de performance)?
Mon proc stocké n'a pas de paramètre de sortie, il renvoie simplement une valeur. L'utilisation d'un paramètre de sortie serait-elle plus rapide?
Pour ce que ça vaut que je utilise MS SQL Server 2005
Intéressant, ne savait pas cette construction était valide. Donc l'exemple que j'ai donné crée une table temporaire. Dans quelle mesure le décririez-vous comme inefficace, très ou ne serait-il pas perceptible à moins qu'il ne soit appelé des dizaines de milliers de fois? – ApplePieIsGood
difficile à dire, votre table est une variable de table donc tout devrait être en mémoire. Pourquoi ne pas faire un test sur votre système de mesure de la différence entre les deux? – JoshBerke