老
老
狼
狼
<76487974@qq.com>
<76487974@qq.com>
存储过程的概念
为什么使用存储过程
基本创建、删除语法
存储过程中的变量
BEGIN...END复合语句
流程控制结构语句
注释语法
使用权限
条件和异常处理程序
游标
存储过程的概念:
所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。
与自定义函数的区别:
自定义函数有且只有一个返回值,就像普通的函数一样,可以直接在表达式中嵌入调用。
存储过程可以没有返回值,也可以有任意个输出参数,必须单独调用。
执行的本质都一样。只是函数有如只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使
用的,可以在select中调用,而存储过程不行。
函数限制比较多,比如不能用临时表,只能用表变量。还有一些函数都不可用等等。而存储过程的限制相对就比较少
。
一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表
对象,因此它可以在查询语句中位于FROM关键字的后面。
为什么使用存储过程:
存储过程的优点:
存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,
所以使用存储过程可提高数据库执行速度。
当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封
装起来与数据库提供的事务处理结合一起使用。
存储过程可以重复使用,可减少数据库开发人员的工作量。
安全性高,可设定只有某此用户才具有对指定存储过程的使用权。
基本的创建、删除语法:
CREATEPROCEDUREsp_name([proc_parameter[,...]])
[characteristic...]routine_body
默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来,可以在创建子程序的时候指定其
名字为db_name.sp_name 。
sp_name 存储过程的名字
proc_parameter指定参数为IN,OUT,或INOUT
characteristic 特征
routine_body包含合法的SQL过程语句。
DROP{PROCEDURE|FUNCTION}[IFEXISTS]sp_name
这个语句被用来移除一个存储程序或函数。即,从服务器移除一个制定的子程序。在MySQL5.1中,你必须有ALTER
ROUTINE权限才可用此子程序。这个权限被自动授予子程序的创建者。
IFEXISTS子句是一个MySQL的扩展。如果程序或函数不存在,它防止发生错误。
评论0