¿Cuál es la diferencia entre un procedimiento almacenado y una vista?
Estoy confundido acerca de algunos puntos:
¿Cuál es la diferencia entre un procedimiento almacenado y una vista?
¿Cuándo debo usar procedimientos almacenados y cuándo debo usar vistas en SQL Server?
¿Las vistas permiten la creación de consultas dinámicas donde podemos pasar parámetros?
¿Cuál es el más rápido y sobre qué base uno es más rápido que el otro?
¿Las vistas o los procedimientos almacenados asignan memoria de forma permanente?
¿Qué significa si alguien dice que las vistas crean una tabla virtual, mientras que los procedimientos crean una tabla de materiales?
Por favor, avíseme sobre más puntos, si los hay.
Una vista representa una tabla virtual . 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 MUCHO en esas tablas... en lugar de unir CADA parte 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
en user_id
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 adelante puedo llamar:
dbo.getDesc 25
y obtendré la descripción de user_id
25, donde 25
es su parámetro.
Obviamente hay muchos más detalles, esta es sólo la idea básica.
Mucha información disponible aquí.
Aquí tenéis un buen resumen:
Un procedimiento almacenado:
- Acepta parámetros
- NO se puede utilizar como bloque de construcción en una consulta más grande.
- Puede contener varias sentencias, bucles, IF ELSE, etc.
- Puede realizar modificaciones en una o varias tablas.
- NO se puede utilizar como destino de una declaración INSERT, UPDATE o DELETE.
Una vista:
- NO acepta parámetros
- Se puede utilizar como bloque de construcción en una consulta más grande.
- Puede contener solo una única consulta SELECT
- NO se pueden realizar modificaciones en ninguna tabla.
- Pero puede (a veces) usarse como destino de una declaración INSERT, UPDATE o DELETE.