To try111():纯属一派胡言!insert,update,delete等用stored procedure照样可以实现!
to trybird: 你误解了: try111() 的意思: 假设我有一个视图: create view View1 as select No,Name,addr from employee那么我可以对View1进行insert update等操作 如 insert into View1 values(...)
To ylm163net(文秀):create procedure pro_ins_emp as insert into employee(No,Name,addr) values(...)事实上,View只是在连接多个表(不管内联外联),使其操作起来看上去更象一个虚拟table,但效率决不可和存储过程相比。并且所有View做的,Stored Procedure都能做,而Stored Procedure做的,View做不到
因为安全性问题,View有时候也会隐藏一些字段,仅连接一个单表 同时,View能做的,Procedure,未必能做,具一例如下:设视图View是入库单的一个视图,因为客户的需求是多样的, 假设客户需要某年某月的入库纪录,可以查询: select * from View where datapart(year,indate)=yearm and datepart(month,indate)=monthn也许有客户仅需某天的纪录,当然也可能仅查询某个人的纪录, 存储过程则无法适应这种多样性查询,除非针对每一种查询 构造一个过程,这是不现实的
另外,对于 select * from table or view 这样的简单查询,存储过程与视图没有什么效率差别
封装、权限控制、简化SQL语句书写等适当使用;
我认为没有必须用的时候!
你误解了: try111() 的意思:
假设我有一个视图:
create view View1
as
select No,Name,addr from employee那么我可以对View1进行insert update等操作
如 insert into View1 values(...)
as
insert into employee(No,Name,addr) values(...)事实上,View只是在连接多个表(不管内联外联),使其操作起来看上去更象一个虚拟table,但效率决不可和存储过程相比。并且所有View做的,Stored Procedure都能做,而Stored Procedure做的,View做不到
同时,View能做的,Procedure,未必能做,具一例如下:设视图View是入库单的一个视图,因为客户的需求是多样的,
假设客户需要某年某月的入库纪录,可以查询:
select * from View
where datapart(year,indate)=yearm and datepart(month,indate)=monthn也许有客户仅需某天的纪录,当然也可能仅查询某个人的纪录,
存储过程则无法适应这种多样性查询,除非针对每一种查询
构造一个过程,这是不现实的
select * from table or view
这样的简单查询,存储过程与视图没有什么效率差别
做数据库,不用View,只用
Procedure,你不会坚持多久的,
不信你试试看
我不想自己把自己逼疯了
你都做过那些项目啊?
作为一个人性化的数据库产品,必然涉及到用户的
各种可能的查询,Procedure是无法应付的,甚至
可能要动态构建sql
trybird(菜鸟) :
不要以为在任何情况下,存储过程总是有明显的速度优势
当我要修改多个表且有一定动态性时,我用存储过程
对于简单的操作,view有其透明性
当用到查询返回结果集时,VIEW可以有缓存
我想这可能比存储过程要快点吧(不确定),但操作是有一定方便之处的
如果说procedure可以完全替代View那MS“大笨蛋”在SQL SERVER中做个View选项是"没事做",
更或者说那些数据库专家研究View是没事找做?
应该承认Procedure 的功能,但View何尝不有它的“看家本领”。
所以该用Procedure与View就用吧!
对于View的而言,因为View是基于Table的,所以关于Table的所有权限,View也一样有
但Procedure是没有权限可言的所以View多用来供用户对数据进行处理,而Procedure常用来作系统级的后台数据处理
--一家之言,希望大家多多指正