视图是数据库数据的特定子集。视图和检索查询是用相同的语句(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™ 启动时自动运行的存储过程。

解决方案 »

  1.   

    用视图吧,存储过程的返回结果不能“二次开发”。
    举个例子,视图就可以
    select *
    from [tabel] t,[view] v
    where t.col1=v.col1
    and v.col2='a'
    and t.col1='b'存储过程怎么也不能实现这样的功能.
    当然这是在楼主的“如果存储过程都能通过视图来实现,那到底是用视图好呢?还是用存储过程?
    ”前提下。存储过程有很多功能是视图不能实现的。
      

  2.   

    wanttoknow2001(风) 对视图的说法,不很正确视图是由查询结果生成的虚拟的表。
    我们可以对视图进行增加、修改和更新的操作
    只是要有一定的限制 
    只要保证视图中所涉及的字段全部来源于一个表,
    而且不能使用派生字段,一定是表中的原有字段
    还有一点就是,没有出现在视图的其它字段,在创建表时
    一定是允许空,这样我们就可以操作视图来影响原表啦。我们可以把视图当做表来操作,
    而存储过程不是表,我们不可以直接操作它,只可以查询。在某种程度上,存储过程的执行速度要比普通的检索语句要快。而且比较灵活,如果同等条件都可以用视图和存储过程来实现的话,
    我选择存储过程至于安全性吗,我觉得存储过程的安全性要高于视图。