随便胡乱说几点,大家补充一下。
1。预编译,已优化,效率较高。避免了SQL语句在网络中传输然后再解释的低效率。
2。如果公司有专门的DBA,写存储过程可以他来做,程序员只要按他提供的接口调用就好了。这样分开来做,比较清楚。
3。修改方便。嵌入在程序中的SQL语句修改比较麻烦,而且经常不能肯定该改的是不是都改了。SQLSERVER上的存储过程修改就比较方便,直接改掉该存储过程,调用它的程序基本不用动,除非改动比较大(如改了传入的参数,返回的数据等)。
4。会安全一点。不会有SQL语句注入问题。
当然,也有缺点。特别是业务逻辑比较复杂时,全用存储过程来写,估计也累的够呛。
■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。
■调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可
■你可以在存储过程中利用Transact-SQL的强大功能。一个SQL存储过程可以包含多个SQL语句。你可以使用变量和条件。这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。
■最后,这也许是最重要的,在存储过程中可以使用参数。你可以传送和返回参数。你还可以得到一个返回值(从SQL RETURN语句)。
(1)安全性。使用视图隐藏了数据的来源。
(2)方便性。在多表连接查询时,可以使用视图提高效率。
你用了视图后,你更改元数据如,表名,列名,那你就只需要改视图的代码,而不需要改程序!
如果你要经常对几个表join查询,那你做成视图,用的时候只要select * from view就行了!