Solución:
Una vista representa un virtual mesa. Puede unir varias tablas en una vista y usar la vista para presentar los datos como si vinieran de una sola tabla.
Un procedimiento almacenado usa parámetros para realizar una función … ya sea que esté 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 mesas:
-
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 desde esas tablas MUCHO … en lugar de hacer la combinación en 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.
Mucha información disponible aquí
Aquí hay un buen resumen:
Un procedimiento almacenado:
- Acepta parámetros
- Poder NO ser utilizado como bloque de construcción en una consulta más grande
- Puede contener varias declaraciones, bucles, IF ELSE, etc.
- Puede realizar modificaciones a una o varias tablas
- NO se puede utilizar como destino de una instrucción INSERT, UPDATE o DELETE.
Una vista:
- Lo hace NO aceptar parámetros
- Puede usarse como bloque de construcción en una consulta más grande
- Puede contener solo una única consulta SELECT
- Poder NO realizar modificaciones a cualquier tabla
- Pero (a veces) se puede utilizar como destino de una instrucción INSERT, UPDATE o DELETE.
Primero debes entender que ambos son cosas diferentes. Stored Procedures
se utilizan mejor para INSERT-UPDATE-DELETE
declaraciones. Mientras que Views
se utilizan para SELECT
declaraciones. Deberías usar ambos.
En las vistas no puede alterar los datos. Algunas bases de datos tienen vistas actualizables donde puede usar INSERT-UPDATE-DELETE
sobre Views
.