视图是数据库数据的特定子集。视图和检索查询是用相同的语句(SQL SELECT 语句)定义的,
但是不能对视图直接进行修改,所以视图的安全性更高.而且占用内存较小存储过程是利用SQL Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pro-SQL和Informix的数据库系统能够中的Informix-4GL语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
1)、变量说明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程控制命令(if…else…、while….)
4)、内部函数 创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
也可以创建在 Microsoft® SQL Server™ 启动时自动运行的存储过程。
但是不能对视图直接进行修改,所以视图的安全性更高.而且占用内存较小存储过程是利用SQL Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pro-SQL和Informix的数据库系统能够中的Informix-4GL语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
1)、变量说明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程控制命令(if…else…、while….)
4)、内部函数 创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
也可以创建在 Microsoft® SQL Server™ 启动时自动运行的存储过程。
举个例子,视图就可以
select *
from [tabel] t,[view] v
where t.col1=v.col1
and v.col2='a'
and t.col1='b'存储过程怎么也不能实现这样的功能.
当然这是在楼主的“如果存储过程都能通过视图来实现,那到底是用视图好呢?还是用存储过程?
”前提下。存储过程有很多功能是视图不能实现的。
我们可以对视图进行增加、修改和更新的操作
只是要有一定的限制
只要保证视图中所涉及的字段全部来源于一个表,
而且不能使用派生字段,一定是表中的原有字段
还有一点就是,没有出现在视图的其它字段,在创建表时
一定是允许空,这样我们就可以操作视图来影响原表啦。我们可以把视图当做表来操作,
而存储过程不是表,我们不可以直接操作它,只可以查询。在某种程度上,存储过程的执行速度要比普通的检索语句要快。而且比较灵活,如果同等条件都可以用视图和存储过程来实现的话,
我选择存储过程至于安全性吗,我觉得存储过程的安全性要高于视图。