Una vista representa un virtual mesa. Puede unir varias tablas en una vista y utilizarla para presentar los datos como si procedieran de una sola tabla.
Un procedimiento almacenado utiliza parámetros para realizar una función... ya sea actualizar e insertar datos, o devolver valores individuales o conjuntos de datos.
¿Debo utilizar una vista, un procedimiento almacenado o un UDF? - contiene una buena información para ayudar a entender cuáles son las diferencias.
Digamos que tengo dos mesas:
tbl_user Columnas: .user_id, .user_name, .user_pw
tbl_perfil Columnas: .profile_id, .user_id .profile_description
Así que si me encuentro consultando desde esas tablas MUCHO... en lugar de hacer la unión en CADA pedazo 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
Así que en el futuro si quiero consultar profile_description por ID de usuario... todo lo que tengo que hacer es
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
Ese código podría ser utilizado 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
Así que más tarde puedo llamar
dbo.getDesc 25
y obtendré la descripción para el usuario id 25. donde el 25 es su parámetro.
Obviamente, hay muchos más detalles, pero esta es sólo la idea básica.