sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es la diferencia entre un procedimiento almacenado y una vista?

Una vista representa un virtual mesa. Puede unir varias tablas en una vista y usar la vista para presentar los datos como si provinieran de una sola tabla.

Un procedimiento almacenado utiliza parámetros para realizar una función... ya sea actualizando e insertando datos, o devolviendo valores únicos o conjuntos de datos.

Creación de vistas y procedimientos almacenados - tiene información de Microsoft sobre cuándo y por qué usar cada uno.

Digamos que tengo dos tablas:

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

Entonces, si me encuentro consultando MUCHAS tablas desde esas tablas ... en lugar de unir CADA pieza de SQL, definiría una vista como:

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

Por lo tanto, si quiero consultar profile_description por user_id en el futuro, todo lo que tengo que hacer es:

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Ese código podría usarse en un procedimiento almacenado como:

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

Entonces, más tarde, puedo llamar:

dbo.getDesc 25

y obtendré la descripción de user_id 25, donde el 25 es su parámetro.

Obviamente hay muchos más detalles, esta es solo la idea básica.