Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è la differenza tra una stored procedure e una vista?

Una vista rappresenta un virtuale tavolo. Puoi unire più tabelle in una vista e utilizzare la vista per presentare i dati come se provenissero da un'unica tabella.

Una procedura memorizzata utilizza i parametri per eseguire una funzione... che si tratti di aggiornare e inserire dati o restituire valori singoli o set di dati.

Creazione di viste e stored procedure - ha alcune informazioni da Microsoft su quando e perché usarle.

Supponiamo di avere due tabelle:

  • tbl_user , con colonne:user_id , user_name , user_pw
  • tbl_profile , con colonne:profile_id , user_id , profile_description

Quindi, se mi ritrovo a interrogare MOLTO quelle tabelle... invece di fare il join in OGNI pezzo di SQL, definirei una vista come:

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

Quindi, se voglio interrogare profile_description da user_id in futuro, tutto ciò che devo fare è:

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Quel codice potrebbe essere utilizzato in una procedura memorizzata come:

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

Quindi, in seguito, posso chiamare:

dbo.getDesc 25

e otterrò la descrizione per user_id 25, dove il 25 è il tuo parametro.

Ovviamente ci sono molti più dettagli, questa è solo l'idea di base.