Jednym z ciekawszych sposobów na dzielenie danych pomiędzy procedurami jest użycie tabel tymczasowych. Rozwiązanie jest proste i skuteczne, można z niego korzystać we wszystkich sytuacjach, minusem jest utrudnione zarządzanie w przypadku gdy więcej procedur będzie korzystać z jednej tabeli tymczasowej, np chcąc zmienić kolumny trzeba będzie zmieniać je we wszystkich procedurach korzystających z danej tabeli tymczasowej.
caller: (tworzymy tabele tymczasową która jest widoczna dla innych procedur)
1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE #ComputedPrice( Items int, Price money, Netto money, PriceIncVat money, ResDate datetime ) EXEC [dbo].[sp_ComputePrice] @IdOrder DROP TABLE #ComputedPrice |
callee: sp_ComputePrice: (wstawiamy dane do tabeli tymczasowej)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if OBJECT_ID('tempdb..#ComputedPrice') is not null -- sprawdzamy czy tabela ComputedPrice istnieje BEGIN INSERT INTO #ComputedPrice( Items, Price, Netto, PriceIncVat, ResDate ) (SELECT @Items ,@Price ,@Netto ,@PriceIncVat ,@ResDate ) END |
caller: wybieramy interesujące nas dane
1 2 3 4 5 | select Items, Price, Netto, PriceIncVat, ResDate from #ComputedPrice |
Należy dodatkowo, zdawać sobie sprawę, że tabela tymczasowa jest widoczna tylko dla użytkownika, który ją stworzył i nikogo więcej. Jeśli chcielibyśmy stworzyć tabelę tymczasową, która byłaby widoczna dla wszystkich użytkowników, należałoby umieścić dwa znaki # przed nazwą tabeli
Więcej na temat współdzielenie danych między procedurami składowanymi:
http://www.sommarskog.se/share_data.html
Comments