Mysql存储过程语法_第1页
Mysql存储过程语法_第2页
Mysql存储过程语法_第3页
Mysql存储过程语法_第4页
Mysql存储过程语法_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、存储过程语法存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。基本语法一 .创建存储过程createproceduresp_name()beginend二 .调用存储过程1.基本语法:callsp_name()注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递三.删除存储过程1 .基本语法:dropproceduresp_name/2 .注意事项(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程四.其他常用命令1.showprocedurestatus显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间

2、等2.showcreateproceduresp_name显示某一个 mysql 存储过程的详细信息数据类型及运算符一、基本数据类型:略二、变量:自定义变量:DECLAREaINT;SETa=100;可用以下语句代替:DECLAREaINTDEFAULT100;变量分为用户变量和系统变量,系统变量又分为会话和全局级变量用户变量:用户变量名一般以开头,滥用用户变量会导致程序难以理解及管理1、在 mysql 客户端使用用户变量mysqlSELECTHelloWorldintox;mysqlSELECTx;mysqlSETy=GoodbyeCruelWorld;mysqlselecty;mysqlS

3、ETz=1+2+3;mysqlselectz;2、在存储过程中使用用户变量mysqlCREATEPROCEDUREGreetWorld()SELECTCONCAT(greeting,World);mysqlSETgreeting=Hello;mysqlCALLGreetWorld();3、在存储过程间传递全局范围的用户变量mysqlCREATEPROCEDUREp1()SETlast_procedure=p1;mysqlCREATEPROCEDUREp2()SELECTCONCAT(Lastprocedure,last_procedure);mysqlCALLp1();mysqlCALLp2(

4、);三、运算符:1 .算术运算符+力口 SETvar1=2+2;4-减 SETvar2=3-2;1*乘 SETvar3=3*2;6/除 SETvar4=10/3;3.3333DIV 整除 SETvar5=10DIV3;3%取模 SETvar6=10%3;12 .比较运算符大于 12False小于 2=小于等于 2=大于等于 3=2TrueBETWEEN 在两值之间 5BETWEEN1AND10TrueNOTBETWEEN 不在两值之间 5NOTBETWEEN1AND10FalseIN 在集合中 5IN(1,2,3,4)FalseNOTIN 不在集合中 5NOTIN(1,2,3,4)Truewa

5、s=等于 2=3False,!=不等于 23False严格比较两个 NULL 值是否相等 NULLNULLTrueLIKE 简单模式匹配GuyHarrisonLIKEGuy%TrueREGEXP 正则式匹配GuyHarrisonREGEXPGgregFalseISNULL 为空 0ISNULLFalseISNOTNULL 不为空 0ISNOTNULLTrue3 .逻辑运算符4 .位运算符|或&与右移位非(单目运算,按位取反)注释:mysql 存储过程可使用两种风格的注释双横杠:-该风格一般用于单行注释c 风格:/*注释内容*/一般用于多行注释流程控制一、顺序结构二、分支结构ifcase

6、三、循环结构for 循环while 循环 loop 循环 repeatuntil 循环注:区块定义,常用beginend;也可以给区块起别名,如:lable:beginendlable;可以用 leavelable;跳出区块,执行区块以后的代码begin 和 end 如同 C 语言中的和。输入和输出mysql 存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUTCreateprocedure|function(IN|OUT|INOUT参数名数据类形.)IN 输入参数表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值OUT 输出参数该值

7、可在存储过程内部被改变,并可返回INOUT 输入输出参数调用时指定,并且可被改变和返回IN 参数例子:CREATEPROCEDUREsp_demo_in_parameter(INp_inINT)BEGINSELECTp_in;-查询输入参数SETp_in=2;-修改selectp_in;-查看修改后的值 END;执行结果:mysqlsetp_in=1mysqlcallsp_demo_in_parameter(p_in)略mysqlselectp_in;略以上可以看出,p_in 虽然在存储过程中被修改,但并不影响p_id 的值OUT 参数例子创建:mysqlCREATEPROCEDUREsp_d

8、emo_out_parameter(OUTp_outINT)BEGINSELECTp_out;/*查看输出参数*/SETp_out=2;/*修改参数值*/SELECTp_out;/*看看有否变化*/END;执行结果:mysqlSETp_out=1mysqlCALLsp_demo_out_parameter(p_out)略mysqlSELECTp_out;略INOUT 参数例子:mysqlCREATEPROCEDUREsp_demo_inout_parameter(INOUTp_inoutINT)BEGINSELECTp_inout;SETp_inout=2;SELECTp_inout;END;

9、执行结果:setp_inout=1callsp_demo_inout_parameter(p_inout)/略selectp_inout;略附:函数库mysql 存储过程基本函数包括:字符串类型,数值类型,日期类型一、字符串类CHARSET(str)返回字串字符集CONCAT(string2,)连接字串INSTR(string.substring)/返回 substring 首次在 string 中出现的位置,不存在返回 0LCASE(string2)/转换成小写LEFT(string2,length)/从 string2 中的左边起取 length 个字符LENGTH(string)/str

10、ing 长度LOAD_FILE(file_name)/从文件读取内容LOCATE(substring,string,start_position)同 INSTR,但可指定开始位置LPAD(string2,length,pad)/重复用 pad 加在 string 开头,直到字串长度为 lengthLTRIM(string2)/去除前端空格REPEAT(string2,count)/重复 count 次REPLACE(str,search_str,replace_str)/在 str 中用 replace_str 替换 search_strRPAD(string2,length,pad)/在 s

11、tr 后用 pad 补充,直到长度为 lengthRTRIM(string2)/去除后端空格STRCMP(stringl,string2)/逐字符比较两字串大小,SUBSTRING(str,position,length)/从 str 的 position 开始,取 length 个字符,注:mysql 中处理字符串时,默认第一个字符下标为 1,即参数 position 必须大于等于 1mysqlselectsubstring(abcd,0,2);+|substring(abcd,0,2)|+|+1rowinset(0.00sec)mysqlselectsubstring(abcd,1,2);

12、+|substring(abcd,1,2)|+|ab|+1rowinset(0.02sec)TRIM(BOTH|LEADING|TRAILINGpaddingFROMstring2)/去除指定位置的指定字符UCASE(string2)/转换成大写RIGHT(string2,length)/取 string2 最后 length 个字符SPACE(count)/生成 count 个空格二、数值类型ABS(number2)/绝对值BIN(decimal_number)/十进制转二进制CEILING(number2)/向上取整CONV(number2,from_base,to_base)/进制转换F

13、LOOR(number2)/向下取整FORMAT(number,decimal_places)/保留小数位数HEX(DecimalNumber)/转十六进制注:HEX()中可传入字符串,则返回其 ASC-11 码,如 HEX(DEF)返回 4142143也可以传入十进制整数,返回其十六进制编码,如 HEX(25)返回 19LEAST(number,number2,.)/求最小值MOD(numerator,denominator)/求余POWER(number,power)/求指数RAND(seed)/随机数ROUND(number,decimals)/四舍五入,decimals 为小数位数注:

14、返回类型并非均为整数,如:(1)默认变为整形值mysqlselectround(1.23);+-+|round(1.23)|+-+|1|+-+1rowinset(0.00sec)mysqlselectround(1.56);+-+|round(1.56)|+-+|2|+-+1rowinset(0.00sec)(2)可以设定小数位数,返回浮点型数据mysqlselectround(1.567,2);+-+|round(1.567,2)|+-+|1.57|+-+1rowinset(0.00sec)SIGN(number2)返回符号,正负或 0SQRT(number2)开平方三、日期类型ADDTIM

15、E(date2,time_interval)/将 time_interval 力口至 Udate2CONVERT_TZ(datetime2,fromTZ,toTZ)/转换时区CURRENT_DATE()/当前日期CURRENT_TIME()/当前时间CURRENT_TIMESTAMP()/当前时间戳DATE(datetime)/返回 datetime 的日期部分DATE_ADD(date2,INTERVALd_valued_type)/在 date2 中加上日期或时间DATE_FORMAT(datetime,FormatCodes)/使用 formatcodes 格式显示datetimeDAT

16、E_SUB(date2,INTERVALd_valued_type)/在 date2 上减去一个时间DATEDIFF(date1,date2)/两个日期差DAY(date)返回日期的天DAYNAME(date)/英文星期DAYOFWEEK(date)/星期(1-7),1 为星期天DAYOFYEAR(date)/一年中的第几天EXTRACT(interval_nameFROMdate)/从 date 中提取日期的指定部分MAKEDATE(year,day)/给出年及年中的第几天,生成日期串MAKETIME(hour,minute,second)/生成时间串MONTHNAME(date)/英文月份

17、名NOW()/当前时间SEC_TO_TIME(seconds)/秒数转成时间STR_TO_DATE(stringformat)/字串转成时间,以 format 格式显示TIMEDIFF(datetime1,datetime2)/两个时间差TIME_TO_SEC(time)/时间转秒数WEEK(date_time,start_of_week)/第几周YEAR(datetime)/年份DAYOFMONTH(datetime)/月的第几天HOUR(datetime)/小时LAST_DAY(date)/date 的月的最后日期MICROSECOND(datetime)/微秒MONTH(datetime)/月MINUTE(datetime)/分注:可用在 INTERVAL 中的类型DAY,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR,HOUR_MINUTE,HOUR_SECOND,MINUTE,MINUTE_SECOND,MONTH,SECOND,YEARDECLAREvariable_name,variable_name.datatypeDEFAULTvalue;其中,datatype 为 mysql 的数据类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论