日期:2014-05-18  浏览次数:20475 次

关于使用Sql语句还是使用存储过程的疑惑
搜索了一些信息
发现很多人认为只是查询的sql语句没必要写成存储过程
有人说使用存储过程会提高效率
也有人说,针对业务逻辑的Sql语句没必要写成存储过程

我想问下,什么叫针对业务逻辑的Sql语句,什么不是
能举一些例子吗?

------解决方案--------------------
以下个人见解,千万不要扔砖!
先来看一下SQL的运行机理。用户界面或客户端发送“文本命令”到服务器,服务器进行解释或编译最后生成本地代码,执行,返回数据。
  由于有一个编译过程,所以每次传送的命令服务器都要编译。而传送的存贮过程命令虽也 要编译但由于其命令相对短小,大部分逻辑已在服务器上,经过一次编译可多次使用,故效率高。但如果你的业务逻辑简单或者说存贮过程中的SQL语句很少的话又会带来存贮过程的其它问题。首先和你直接写SQL命令没有区别,其次存贮过有破解工具,若是保密的业务逻辑或者商业逻辑是不是很危险呢?
------解决方案--------------------
什么叫针对业务逻辑的Sql语句

-------
应该说的是不要把一些业务逻辑放在存储过程中把,分层的话一般把业务逻辑单独放在逻辑层
------解决方案--------------------
什么叫针对业务逻辑的Sql语句
-------------
你想象后果,如果业务逻辑还在数据层存在,那么一旦逻辑变动。。。。
------解决方案--------------------
存储过程相对要好一点
但是,如果你就把一条删除一句也写成存储过程,我看就没有必要了
------解决方案--------------------
什么叫针对业务逻辑的Sql语句
-------------
你想象后果,如果业务逻辑还在数据层存在,那么一旦逻辑变动。。。。


我也感觉把所有的业务逻辑写到存储过程不好,但就事论事
可以把生成删除存储过程的语句写到方法中,并对SqlException进行分析,比如不存在的,错误的Number进行比较,用方法来管理存储过程,但是首要前提是SQL语句比较正确

------解决方案--------------------
你可以衡量一下,业务逻辑的代码可能更多侧重是容易变化的逻辑
最重要的是看你的需求是不是经常需要变化而导致需要经常的修改存储过程。