Uma visualização representa uma tabela virtual . Você pode associar várias tabelas em uma exibição e usá-la para apresentar os dados como se estivessem vindo de uma única tabela.
Um procedimento armazenado usa parâmetros para executar uma função ... esteja atualizando e inserindo dados ou retornando valores únicos ou conjuntos de dados.
Criando vistas e procedimentos armazenados - possui algumas informações da Microsoft sobre quando e por que usar cada uma.
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 perguntar tanto nessas tabelas ... em vez de fazer a junção em TODAS as partes do SQL, eu definiria uma exibiçã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 consulta 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 ligar para:
dbo.getDesc 25
e eu receberei a descrição para user_id
25, onde 25
é o seu parâmetro.
Obviamente, há muito mais detalhes, essa é apenas a idéia básica.
Muitas informações disponíveis aqui
Aqui está um bom resumo:
Um procedimento armazenado:
Uma vista:
fonte
Primeiro você precisa entender que ambas são coisas diferentes.
Stored Procedures
são melhor utilizados paraINSERT-UPDATE-DELETE
instruções. Considerando queViews
são usados paraSELECT
instruções. Você deve usar os dois.Nas visualizações, você não pode alterar os dados.Alguns bancos de dados têm visões atualizáveis onde você pode usarINSERT-UPDATE-DELETE
onViews
.fonte
Uma exibição do SQL é uma tabela virtual, baseada na consulta SQL SELECT. Uma visualização faz referência a uma ou mais tabelas de banco de dados existentes ou outras visualizações. É o instantâneo do banco de dados, enquanto um procedimento armazenado é um grupo de instruções Transact-SQL compiladas em um único plano de execução.
O View é simples, apresentando dados armazenados nas tabelas do banco de dados, enquanto um procedimento armazenado é um grupo de instruções que podem ser executadas.
Uma visualização é mais rápida, pois exibe dados das tabelas referenciadas, enquanto um procedimento de armazenamento executa instruções sql.
Confira este artigo: Exibir vs procedimentos armazenados . Exatamente o que você está procurando
fonte
Uma visualização é uma maneira simples de salvar um complexo
SELECT
no banco de dados.Um procedimento de armazenamento é usado quando o SQL simples simplesmente não é suficiente. Os procedimentos de armazenamento contêm variáveis, loops e chamadas para outros procedimentos armazenados. É uma linguagem de programação, não uma linguagem de consulta.
As vistas são estáticas. Pense nelas como novas tabelas com um determinado layout e os dados neles são criados dinamicamente usando a consulta com a qual você os criou. Como em qualquer tabela SQL, você pode classificá-la e filtrá-la com
WHERE
,GROUP BY
eORDER BY
.Depende do que você faz.
Depende do banco de dados. As visualizações simples apenas executam a consulta e filtram o resultado. Porém, bancos de dados como o Oracle permitem criar uma visualização "materializada", que é basicamente uma tabela que é atualizada automaticamente quando os dados subjacentes da visualização são alterados.
Uma visualização materializada permite criar índices nas colunas da visualização (especialmente nas colunas computadas que não existem em nenhum lugar do banco de dados).
Eu não entendo do que você está falando.
fonte
Além dos comentários acima, gostaria de acrescentar alguns pontos sobre o Views.
fonte
fonte
Mahesh não está certo quando sugere que você não pode alterar os dados em uma exibição. Então, com a visão de Patrick
POSSO atualizar os dados ... como exemplo, posso fazer um desses ...
ou
Você não pode INSERIR nessa exibição, pois nem todos os campos de toda a tabela estão presentes e estou assumindo que PROFILE_ID é a chave primária e não pode ser NULL. No entanto, às vezes você pode INSERIR em uma visualização ...
Criei uma exibição em uma tabela existente usando ...
ENTÃO
e
Tanto o INSERT quanto o DELETE trabalharam neste caso
Obviamente, você não pode atualizar nenhum campo agregado ou calculado, mas qualquer exibição que seja apenas uma exibição direta deve ser atualizável.
Se a visualização contiver mais de uma tabela, você não poderá inserir ou excluir, mas se a visualização for apenas um subconjunto de uma tabela, normalmente poderá.
fonte
A principal diferença é que, quando você está consultando uma visualização, sua definição é colada na sua consulta. O procedimento também pode fornecer resultados de consulta, mas é compilado e por muito mais rápido. Outra opção são visualizações indexadas.
fonte
O @Patrick está correto com o que ele disse, mas, para responder às outras perguntas, o View será criado na Memória e, dependendo do tipo de Junções, Dados e se houver alguma agregação, pode ser um modo de exibição com muita memória.
Os procedimentos armazenados fazem todo o processamento usando a Tabela Temp Hash, por exemplo, # tmpTable1 ou na memória usando @ tmpTable1. Dependendo do que você quer que ele faça.
Um procedimento armazenado é como uma função, mas é chamado diretamente pelo seu nome. em vez de funções que são realmente usadas dentro de uma consulta em si.
Obviamente, na maioria das vezes, as tabelas de memória são mais rápidas, se você não estiver recuperando muitos dados.
fonte