我对以下几点感到困惑:
存储过程和视图之间有什么区别?
什么时候应该在SQL Server中使用存储过程,什么时候应该使用视图?
视图是否允许创建可以传递参数的动态查询?
哪一个是最快的,在什么基础上一个比另一个快?
视图或存储过程是否永久分配内存?
如果有人说视图创建虚拟表,而过程创建material 表,这意味着什么?
请让我知道更多的要点,如果有的话.
我对以下几点感到困惑:
存储过程和视图之间有什么区别?
什么时候应该在SQL Server中使用存储过程,什么时候应该使用视图?
视图是否允许创建可以传递参数的动态查询?
哪一个是最快的,在什么基础上一个比另一个快?
视图或存储过程是否永久分配内存?
如果有人说视图创建虚拟表,而过程创建material 表,这意味着什么?
请让我知道更多的要点,如果有的话.
一个视图代表一张virtual的桌子.您可以在一个视图中连接多个表,并使用该视图显示数据,就像数据来自单个表一样.
存储过程使用参数执行函数...无论是更新和插入数据,还是返回单个值或数据集.
Creating Views and Stored Procedures-从微软获得了一些关于何时以及为什么使用每一个的信息.
假设我有两张桌子:
tbl_user
,带列:user_id
、user_name
、user_pw
tbl_profile
,带列:profile_id
、user_id
、profile_description
所以,如果我发现自己经常从这些表格中查询...我将定义一个如下视图,而不是在每一段SQL中进行连接:
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
因此,如果我想在将来查询profile_description
乘user_id
,我所要做的就是:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
该代码可用于以下存储过程:
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
所以,稍后,我可以打电话:
dbo.getDesc 25
我将得到user_id
25的描述,其中25
是你的参数.
显然还有很多细节,这只是基本的 idea .