什么是存储过程?与函数有什么区别和联系?
1、存储过程
SQL语句在执行的时候,需要先编译再运行。在大型的数据库系统中,为了提高效率,将为了完成某个功能的SQL语句集进行编译优化之后,存储在数据库服务器中,用户通过指定的存储过程的名字来调用执行。
运用存储过程可以增强SQL语句的灵活性和可用性。
2、存储过程和函数的区别?
(1)存储过程一般是作为一个独立的部分来执行。函数一般会作为查询语句的一个部分来调用。
(2)一般来说,存储过程实现的功能较为复杂。函数实现的功能比较有针对性。
(3)存储过程可以返回多个参数。函数需要用括号包住输入的参数,并且只能返回一个值或者对象。
(4)函数可以嵌入在SQL中使用,也可以在select中使用,存储过程则不可以。
(5)函数不能操作实体表,只能操作内建表。
(6)存储过程在创建时就在服务器上进行了编译,执行速度比函数快。
3、存储过程的优点和缺点?
优点:
(1)执行速度快
存储过程只在创建时进行编译,以后每次执行存储过程都不需要重新编译,而一般SQL语句每执行一次就需编译一次,所以使用存储过程可提高数据库的执行速度。
(2)减少网络通信量
当对数据库进行复杂操作时,(如对多个表进行insert、update、select、delete时)可将这些复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序完成就是多条SQL语句,可能要多次连接数据库,而换成存储过程只需一次连接。
缺点:
(1)开发调试差
无良好的IDE开发工具,存储过程的调试比一般SQL要复杂的多。
(2)可移植性差
由于存储过程将应用程序绑定到数据库上,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。