6.5 自定义存储过程
存储过程是数据库开发者在数据转换或查询时经常使用的一种方式,是在数据库服务器端执行的SQL语句的集合。简单SQL语句在执行的时候需要先编译,然后执行。而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给定参数来调用执行它。它能够向用户返回数据、向数据库表中写入和修改数据,还可以执行系统函数和管理操作。存储过程能够提高应用程序的处理能力,降低编写数据库应用程序的难度。同时还可以提高应用程序的效率。存储过程的处理非常灵活,允许用户使用声明的变量,还可以有输入/输出参数。返回单个或多个结果集。当希望在不同的应用程序或平台上执行相同的函数或者封装特定功能时,存储过程是非常有用的。存储过程通常有以下优点:
①存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
②存储过程允许标准组件编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
③存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析优化,并且最终被存储在系统表的执行计划中。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
④存储过程能够减少网络流量。针对同一个数据库对象的操作,如查询、修改,如果这一操作所涉及的Transaction-SQL语句被定义为存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大降低了网络流量和网络负载。
⑤存储过程可被作为一种安全机制来充分利用。系统管理员通过对某一存储过程的执行权限进行限制,能够实现对相应数据访问权限的限制。避免了非授权用户对数据的访问,保证了数据的安全。