Mysql之存储过程和函数


Mysql之存储过程和函数
存储过程就是一条或多条SQL语句的集合,可视为批文件,但是其作用不仅用于批处理。存储程序分为:1、存储过程 2、函数使用Call语句来调用存储过程,只能用输出变量返回值。
一、创建存储过程语法:指定存储参数列表为:[IN | OUT | INOUT] param_name type其中IN表示输入参数,OUT表示输出参数,INOUT表示即可输入也可输出param_name表示参数名称type 表示参数类型,该类型可以是Mysql数据库中的任意类型。
characteristics 指定存储过程的特性,有以下取值:LANGUAGE SQL:说明routine_body部分是由SQL语句组成,当前系统支持的语言为SQL,SQL是LANGUAGE特性的唯一值。
[NOT] DETERMINISTIC:指明存储过程执行的结果是否正确。1.DETERMINISTIC表示结果是正确的。每次执行存储过程时,相同输入会得到相同的输出。2.NOT DETERMINISTIC表示结果是不确定的,相同的输入可能得到不同的输出。如果没有指定任意一个值,默认为NOT DETERMINISTIC。
{ CONTAINS SQL | NO SQL |REDAS SQL DATA | MODIFIES SQL DATA }:指明子程序使用SQL语句的限制。 1. CONTAINS SQL:表示子程序包含SQL语句,但是不包含读写数据的语句。2.NO SQL:表示子程序不包含SQL语句。3.REDAS SQL DATA :说明子程序包含数据的语句。4.MODIFIES SQL DATA:表明子程序包含写数据的语句。默认为CONTAINS SQL。
SQL SECURITY { DEFINER | INVOKER}:指明谁有权限来执行。 1. DEFINER表示只有定义者才能执行。2.INVOKER表示拥有权限的调用者可以执行。默认情况下,系统指定为DEFINER
COMMENT ‘string’:注释信息,可以用来描述存储过程或函数。
routine_body是SQL代码的内容。通常用begin……end表示SQL代码的开始和结束。
编写存储过程并不是简单的事情,可能存储过程中需要复杂的SQL语句,并且要创建存储过程的权限;但是使用存储过程将简化操作,减少冗余的操作步骤,同时,还可以减少操作过程中的失误、提高效率,因此存储过程非常的有用,而且应该尽量学会使用。例1:例2:
例3:
************************mysql存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUTCreate procedure|function([[IN |OUT |INOUT ] 参数名 数据类形…])IN 输入参数表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值OUT 输出参数该值可在存储过程内部被改变,并可返回INOUT 输入输出参数调用时指定,并且可被改变和返回IN参数例子:执行结果:

OUT参数例子执行结果:
INOUT参数例子:执行结果:

****************************二、特定异常在MySQL中,特定异常需要特定处理。这些异常可以联系到错误,以及子程序中的一般流程控制。定义异常是事先定义程序执行过程中遇开发云主机域名到的问题,异常处理定义了在遇到问题时对应当采取的处理方式,并且保证存储过程或者函数在遇到错误时或者警告时能够继续执行。1 异常定义1.1 语法1.2 说明
1.3 示例定义“ERROR 1148(42000)”错误,名称为command_not_allowed。可以有以下两种方法:
2 自定义异常处理2.1 异常处理语法
2.2 参数说明
2.3 异常捕获方法三、函数函数的作用:提高代码的复用率函数可以调用函数中的方法来实现某些功能利用now()来实现空参数函数:————————————————————————————

函数分为空参数函数和传参函数
注意:函数必需要有返回值类型用returns描述returns后面跟的是函数体如果函数体只有单条就直接描述函数体如果有多条 在returns后面 begin开始 函数体结束后要写end结束end之前一定要确定返回值———————————————————————————————–创建传参函数:

创建给stu表添加用户的多函数体传参函数:

相关推荐: 解决MySQL max_allowed_packet导致sql文件source报错方法

本文主要给大家简单讲讲解决MySQL max_allowed_packet导致sql文件source报错方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望解决MySQL max_allowed_packet导致…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/09 17:52
下一篇 06/09 17:52

相关推荐