Widok reprezentuje wirtualną tabelę. Możesz połączyć wiele tabel w widoku i używać widoku do przedstawiania danych tak, jakby pochodziły z jednej tabeli.
Procedura składowana używa parametrów do wykonywania funkcji ... niezależnie od tego, czy aktualizuje i wstawia dane, czy zwraca pojedyncze wartości lub zestawy danych.
Tworzenie widoków i procedur składowanych - zawiera pewne informacje od firmy Microsoft, kiedy i dlaczego należy ich używać.
Powiedzmy, że mam dwie tabele:
tbl_user
Z kolumn: user_id
, user_name
,user_pw
tbl_profile
Z kolumn: profile_id
, user_id
,profile_description
Tak więc, jeśli znajdę dużo zapytań z tych tabel ... zamiast wykonywać sprzężenie w KAŻDYM fragmencie SQL, zdefiniowałbym widok taki:
CREATE VIEW vw_user_profile
AS
SELECT A.user_id, B.profile_description
FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO
Tak więc, jeśli chcę zapytania profile_description
o user_id
przyszłości, wszystko co musisz zrobić, to:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
Tego kodu można użyć w procedurze składowanej, takiej jak:
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
Więc później mogę zadzwonić:
dbo.getDesc 25
i otrzymam opis dla user_id
25, gdzie 25
jest twój parametr.
Jest oczywiście dużo więcej szczegółów, to tylko podstawowa idea.
Wiele informacji dostępnych tutaj
Oto dobre podsumowanie:
Procedura składowana:
Widok:
źródło
Najpierw musisz zrozumieć, że obie są różne.
Stored Procedures
najlepiej używać doINSERT-UPDATE-DELETE
stwierdzeń. NatomiastViews
są używane doSELECT
stwierdzeń. Powinieneś użyć obu z nich.W widokach nie można zmieniać danych.Niektóre bazy danych mają możliwych do zaktualizowania Wyświetleń gdzie można używaćINSERT-UPDATE-DELETE
naViews
.źródło
Widok SQL to wirtualna tabela oparta na zapytaniu SQL SELECT. Widok odwołuje się do jednej lub kilku istniejących tabel bazy danych lub innych widoków. Jest to migawka bazy danych, podczas gdy procedura składowana to grupa instrukcji języka Transact-SQL skompilowanych w jeden plan wykonania.
Widok to proste prezentowanie danych przechowywanych w tabelach bazy danych, podczas gdy procedura składowana to grupa instrukcji, które można wykonać.
Widok jest szybszy, ponieważ wyświetla dane z tabel, do których się odwołuje, podczas gdy procedura magazynu wykonuje instrukcje sql.
Zobacz ten artykuł: Wyświetlanie a procedury składowane . Dokładnie to, czego szukasz
źródło
Widok to prosty sposób na zapisanie złożonego obiektu
SELECT
w bazie danych.Procedura składowania jest używana, gdy prosty SQL po prostu nie wystarczy. Procedury składowane zawierają zmienne, pętle i wywołania innych procedur składowanych. To język programowania, a nie język zapytań.
Widoki są statyczne. Pomyśl o nich jak o nowych tabelach z określonym układem, a dane w nich są tworzone w locie przy użyciu zapytania, które je utworzyłeś. Podobnie jak w przypadku każdej tabeli SQL, możesz ją sortować i filtrować za pomocą
WHERE
,GROUP BY
iORDER BY
.To zależy od tego, co robisz.
Zależy od bazy danych. Proste widoki po prostu uruchamiają zapytanie i filtrują wynik. Jednak bazy danych, takie jak Oracle, pozwalają na utworzenie „zmaterializowanego” widoku, który jest w zasadzie tabelą aktualizowaną automatycznie, gdy zmieniają się podstawowe dane widoku.
Widok zmaterializowany umożliwia tworzenie indeksów na kolumnach widoku (szczególnie na kolumnach obliczeniowych, które nie istnieją nigdzie w bazie danych).
Nie rozumiem, o czym mówisz.
źródło
Oprócz powyższych uwag chciałbym dodać kilka punktów dotyczących widoków.
źródło
źródło
Mahesh nie ma racji, sugerując, że nie można zmieniać danych w widoku. Tak jest z poglądem Patricka
MOGĘ zaktualizować dane ... na przykład mogę zrobić jedno z poniższych ...
lub
Nie możesz WSTAWIĆ do tego widoku, ponieważ nie wszystkie pola w całej tabeli są obecne i zakładam, że PROFILE_ID jest kluczem podstawowym i nie może mieć wartości NULL. Jednak czasami możesz WSTAWIĆ do widoku ...
Utworzyłem widok na istniejącej tabeli za pomocą ...
NASTĘPNIE
i
W tym przypadku zadziałały zarówno INSERT, jak i DELETE
Oczywiście nie można aktualizować żadnych pól, które są agregowane lub obliczane, ale każdy widok, który jest tylko widokiem prostym, powinien być aktualizowany.
Jeśli widok zawiera więcej niż jedną tabelę, nie można wstawiać ani usuwać, ale jeśli widok jest podzbiorem tylko jednej tabeli, zwykle jest to możliwe.
źródło
Główna różnica polega na tym, że podczas wykonywania zapytania dotyczącego widoku jego definicja jest wklejana do zapytania. Procedura mogłaby również dać wyniki zapytania, ale jest ona kompilowana i przez to szybciej. Inną opcją są widoki indeksowane.
źródło
@Patrick ma rację w tym, co powiedział, ale aby odpowiedzieć na Twoje inne pytania, Widok utworzy się w pamięci iw zależności od typu połączeń, danych i jeśli zostanie wykonana agregacja, może to być widok wymagający dużej ilości pamięci.
Procedury składowane wykonują całe swoje przetwarzanie za pomocą Temp Hash Table, np. # TmpTable1 lub w pamięci przy użyciu @ tmpTable1. W zależności od tego, co chcesz mu powiedzieć.
Procedura składowana jest podobna do funkcji, ale jest nazywana bezpośrednio z nazwy. zamiast funkcji, które są faktycznie używane wewnątrz samego zapytania.
Oczywiście w większości przypadków tablice pamięci są szybsze, jeśli nie pobierasz dużej ilości danych.
źródło