欢迎来到天天文库
浏览记录
ID:39973294
大小:559.00 KB
页数:20页
时间:2019-07-16
《mysql存储过程技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MYSQL存储过程技术存储过程的概念为什么使用存储过程基本创建、删除语法存储过程中的变量BEGIN...END复合语句流程控制结构语句注释语法使用权限条件和异常处理程序游标MYSQL存储过程技术存储过程的概念:所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。与自定义函数的区别:自定义函数有且只有一个返回值,就像普通的函数一样,可以直接在表达式中嵌入调用。存储过程可以没有返回值,也可以有任意个输出参数,必须单独调用。执行的本质都一样。只是函数有如只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中
2、调用,而存储过程不行。函数限制比较多,比如不能用临时表,只能用表变量。还有一些函数都不可用等等。而存储过程的限制相对就比较少。一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。对于存储过程来说可以返回参数,而函数只能返回值或者表对象。存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。MYSQL存储过程技术为什么使用存储过程:存储过程的优点:存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提
3、高数据库执行速度。当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。存储过程可以重复使用,可减少数据库开发人员的工作量。安全性高,可设定只有某些用户才具有对指定存储过程的使用权。MYSQL存储过程技术基本的创建、删除语法:CREATEPROCEDUREsp_name([proc_parameter[,...]])[characteristic...]routine_body默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来,可以在创建子程序的时候指定其
4、名字为db_name.sp_name。sp_name存储过程的名字proc_parameter指定参数为IN,OUT,或INOUTcharacteristic特征routine_body包含合法的SQL过程语句。DROP{PROCEDURE
5、FUNCTION}[IFEXISTS]sp_name这个语句被用来移除一个存储程序或函数。即,从服务器移除一个制定的子程序。在MySQL5.1中,你必须有ALTERROUTINE权限才可用此子程序。这个权限被自动授予子程序的创建者。IFEXISTS子句是一个MySQL的扩展。如果程序或函数不存在,它防止发生错误。MYSQL存储过程技术基本的创建、调用
6、、删除语法:delimiter//DROPPROCEDUREIFEXISTStest//CREATEPROCEDUREtest/*存储过程名*/(INinparmsINT,OUToutparamsvarchar(32))/*输入参数*/BEGIN/*语句块头*/DECLAREvarCHAR(10);/*变量声明*/IFinparms=1THEN/*IF条件开始*/SETvar='hello';/*赋值*/ELSESETvar='world';ENDIF;/*IF结束*/INSERTINTOt1VALUES(var);/*SQL语句*/SELECTnameFROMt1LIMIT1INTOo
7、utparams;END//delimiter;calltest(1,@out);MYSQL存储过程技术存储过程的变量:声明变量:DECLAREvar_name[,...]type[DEFAULTvalue]这个语句被用来声明局部变量。要给变量提供一个默认值,需要包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。局部变量的作用范围在它被声明的BEGIN...END块内。它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。变量赋值,SET语句:SETvar_name=expr[,var_name=expr]...也可以
8、用语句代替SET来为用户变量分配一个值。在这种情况下,分配符必须为:=而不能用=,因为在非SET语句中=被视为一个比较操作符,如下所示:mysql>SET@t1=0,@t2=0,@t3=0;mysql>SELECT@t1:=0,@t2:=0,@t3:=0;对于使用select语句为变量赋值的情况,若返回结果为空,即没有记录,此时变量的值为上一次变量赋值时的值,如果没有对变量赋过值,则为NULL。变量赋值,SELECT...INTO语
此文档下载收益归作者所有