Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der Unterschied zwischen einer gespeicherten Prozedur und einer Ansicht?

Eine Ansicht stellt ein virtuelles dar Tisch. Sie können mehrere Tabellen in einer Ansicht zusammenführen und die Ansicht verwenden, um die Daten so darzustellen, als kämen die Daten aus einer einzigen Tabelle.

Eine gespeicherte Prozedur verwendet Parameter, um eine Funktion auszuführen, ob sie Daten aktualisiert und einfügt oder einzelne Werte oder Datensätze zurückgibt.

Erstellen von Ansichten und gespeicherten Prozeduren - enthält einige Informationen von Microsoft, wann und warum sie verwendet werden.

Angenommen, ich habe zwei Tabellen:

  • tbl_user , mit Spalten:user_id , user_name , user_pw
  • tbl_profile , mit Spalten:profile_id , user_id , profile_description

Also, wenn ich diese Tabellen VIEL abfrage... anstatt den Join in JEDEM Teil von SQL zu machen, würde ich eine Ansicht wie folgt definieren:

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

Also, wenn ich profile_description abfragen möchte nach user_id In Zukunft muss ich nur noch:

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Dieser Code könnte in einer gespeicherten Prozedur verwendet werden wie:

CREATE PROCEDURE dbo.getDesc
    @ID int
AS
BEGIN
    SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO

So kann ich später anrufen:

dbo.getDesc 25

und ich bekomme die Beschreibung für user_id 25, wobei 25 ist Ihr Parameter.

Es gibt natürlich viel mehr Details, das ist nur die Grundidee.