Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a diferença entre um procedimento armazenado e uma exibição?


Uma visualização representa um virtual tabela. Você pode unir várias tabelas em uma exibição e usar a exibição para apresentar os dados como se os dados fossem provenientes de uma única tabela.

Um procedimento armazenado usa parâmetros para fazer uma função... seja atualizando e inserindo dados ou retornando valores únicos ou conjuntos de dados.

Criando exibições e procedimentos armazenados - tem algumas informações da Microsoft sobre quando e por que usar cada um.

Digamos que eu tenha duas tabelas:
  • tbl_user , com colunas:user_id , user_name , user_pw
  • tbl_profile , com colunas:profile_id , user_id , profile_description

Então, se eu me encontrar consultando muito essas tabelas ... em vez de fazer a junção em TODAS as partes do SQL, eu definiria uma visão 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

Assim, se eu quiser consultar profile_description por user_id no futuro, tudo o que tenho a fazer é:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Esse código pode ser usado em um procedimento armazenado como:
CREATE PROCEDURE dbo.getDesc
    @ID int
AS
BEGIN
    SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO

Então, mais tarde, eu posso chamar:
dbo.getDesc 25

e obterei a descrição de user_id 25, onde o 25 é o seu parâmetro.

Obviamente, há muito mais detalhes, essa é apenas a ideia básica.