Mam procedura składowana, która zwraca wartośćI wywołaj go z innych procedur przechowywanych, które muszą pobrać tę wartość. Wywołanie procedury składowanej odbywa się wewnątrz transakcji, procedura składowana, która zwraca wartość (i faktycznie tworzy wartość i przechowuje ją w tabeli, której nie dotyka żaden inny proces), ale nie jest częścią transakcji wywołującego.Jaki jest najlepszy sposób przypisania zwróconej wartości przechowywanego procesu do zmiennej w SQL?
Pytanie brzmi, jaki jest najskuteczniejszy sposób pobrania wartości zwracanej procedury przechowywanej i zapisania jej w zmiennej w procedurze wywołującej?
Obecnie mam następujące i zastanawiam się, czy jest to bardzo nieefektywne?
DECLARE @tmpNewValue TABLE (newvalue int)
INSERT INTO @tmpNewValue EXEC GetMyValue
DECLARE @localVariable int
SET @localVariable = (SELECT TOP 1 newvalue FROM @tmpNewValue)
Czy nie ma prostszej metody robienia tego? Czy nie jest to droga droga (pod względem wydajności)?
Moje zapisane proc nie ma parametrów wyjściowych, po prostu zwraca wartość. Czy użycie parametru wyjściowego byłoby szybsze?
Na co warto używam MS SQL Server 2005
Ciekawe, nie wiedziałem, że konstrukcja była ważna. Tak więc podałem przykład tworzenia tabeli tymczasowej. Jak mało wydajnie byś to opisał, czy nie byłby zauważalny, gdyby nie był nazywany dziesiątkami tysięcy razy? – ApplePieIsGood
Trudno powiedzieć, że twoja tabela jest zmienną tabeli, więc wszystko powinno być w pamięci. Dlaczego nie uruchomić testu na swoim systemie zmierzyć różnicę z dwóch? – JoshBerke