Bu değeri almak için gereken diğer saklı yordamlardan bir değer döndüren bir saklı yordamım var. Çağırma saklı yordam, bir işlemin içinde, değeri döndüren saklı yordam (ve aslında değeri oluşturur ve başka proc dokunmadığı bir tabloda saklar) kendi işleminin içinde değildir, ancak arayanın işleminin bir parçası olur.Depolanmış bir proc'nun döndürülen değerini SQL'de bir değişkene atamanın en iyi yolu nedir?
Sorun şu ki, saklı yordamın geri dönüş değerini almak ve arama procunda bir değişkende saklamak için en etkili yol hangisidir?
Şu anda aşağıdakiler var ve onun verimsiz olup olmadığını merak ediyorum?
DECLARE @tmpNewValue TABLE (newvalue int)
INSERT INTO @tmpNewValue EXEC GetMyValue
DECLARE @localVariable int
SET @localVariable = (SELECT TOP 1 newvalue FROM @tmpNewValue)
Bunu yapmanın daha düz bir yolu yok mu? Bu pahalı (performans açısından) bir yol değil mi?
Kayıtlı proc'm bir çıkış parametresi yok, sadece bir değer döndürüyor. Bir çıkış parametresi kullanmak daha hızlı mı olur?
declare @localVariable int
exec @localVariable =GetMyValue
select @localVariable
İlginç, o yapı geçerli olduğunu bilmiyordum. Yani verdiğim örnek bir geçici masa oluşturuyor. Ne kadar verimsiz olduğunu açıklar mısınız, yoksa on binlerce kez çağrılmadıkça fark edilmez mi? – ApplePieIsGood
söylemek zor, tablonuz bir tablo değişkendir, bu yüzden hepsi bellekte olmalı. Neden sisteminizde bir test yapmıyorsanız, bu farkı ikiye ayırın? – JoshBerke