Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle est la différence entre une procédure stockée et une vue ?

Une vue représente un virtuel table. Vous pouvez joindre plusieurs tables dans une vue et utiliser la vue pour présenter les données comme si elles provenaient d'une seule table.

Une procédure stockée utilise des paramètres pour exécuter une fonction... qu'il s'agisse de mettre à jour et d'insérer des données, ou de renvoyer des valeurs uniques ou des ensembles de données.

Création de vues et de procédures stockées - a des informations de Microsoft sur quand et pourquoi utiliser chacun.

Supposons que j'ai deux tables :

  • tbl_user , avec les colonnes :user_id , user_name , user_pw
  • tbl_profile , avec les colonnes :profile_id , user_id , profile_description

Donc, si je me retrouve à interroger BEAUCOUP sur ces tables... au lieu de faire la jointure dans CHAQUE morceau de SQL, je définirais une vue comme :

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

Ainsi, si je veux interroger profile_description par user_id à l'avenir, tout ce que j'ai à faire est :

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Ce code pourrait être utilisé dans une procédure stockée comme :

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

Alors, plus tard, je peux appeler :

dbo.getDesc 25

et j'obtiendrai la description de user_id 25, où le 25 est votre paramètre.

Il y a évidemment beaucoup plus de détails, c'est juste l'idée de base.