我的程序有如下功能放存储过程:
1、复杂的条件查询。
2、所有的报表。
3、一些字段很多的的插入和更新。有朋友建议我,把1,3放代码里面。
因为他觉得代码可能里面可能比存储过程更安全。
因为存储过程出错不能报错。请问,这个观点是否正确,存储过程执行能够监视,怎么监视。存储安全报表
1、复杂的条件查询。
2、所有的报表。
3、一些字段很多的的插入和更新。有朋友建议我,把1,3放代码里面。
因为他觉得代码可能里面可能比存储过程更安全。
因为存储过程出错不能报错。请问,这个观点是否正确,存储过程执行能够监视,怎么监视。存储安全报表
插入和更新,直接放代码就行了。
复杂的条件查询,通常也可以使用前台代码来实现逻辑。代码比存储过程更安全,这个是基于sql注入说的。做好注入的防范,应该是没有问题的。
另外,存储过程不能报错,这个就看你怎么用了try catch的方式,通常可以报出一些错误,但是逻辑上的问题,比如没有对应物品价格等等,需要写一些附加代码来实现。监视角度讲,存储过程没有直接监控语句来的直接,但会代码新能的提升,高度集成的优势。这个就是取舍之间的事儿了。lz自己斟酌吧。参考
建议全部用存储过程了
2、所有的报表。
3、一些字段很多的的插入和更新。看你用什么语言开发,如果用JAVA,直接用ORM工具来完成插入与更新,毕竟把一些业务逻辑写在存储过程中,不太符合面向对象的。
复杂的查询条件查询,我建议写一个通用的存储过程,将查询条件作为参数传递进去。
报表就建议你放在存储过程,这样一旦报表有修改,可以直接改脚本,不用改报表本身的代码。
示例代码不但可以在sql server 2008的联机丛书中找到,而且示例数据库中也是有的,你可以参考下AdventureWorks示例数据库中的:
表:dbo.ErrorLog——用于记录错误日志;
过程:dbo.uspLogError——用于向日志表中加入数据;
dbo.uspPrintError——用于输出错误信息到界面;
以及一个使用了上述对象的过程,里面有过程的基本结构:
HumanResources.uspUpdateEmployeeHireInfo