码迷,mamicode.com
首页 > 数据库 > 详细

MySQL-快速入门(8)存储过程、存储函数

时间:2019-09-04 21:31:57      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:简单   query   读数   efi   情况   test   信息   nis   不包含   

1、存储过程

  1》创建存储过程:create procedure

create procedure sp_name ([in|out|inout] param_name type)
[characteristics ...]  routine_body

    characteristics指定存储过程的特性:

      1>language sql:说明routine_body部分是由sql语句组成的,当前系统支持的语言为sql,sql是language特性的唯一值。

      2>[not] deterministic:指明存储过程执行的结果是否确定。deterministic表示结果是确定的。每次执行存储过程时,相同的输入会得到相同的输出。not deterministic表示结果是不确定的,相同的输入可能得到不同的输出。如果没有指定任意一个值,默认为not deterministic。

      3>{contains sql | no sql | reads sql data | modifies sql data}:指明子程序使用sql语句的限制。contains sql表明子程序包含sql语句,但是不包含读写数据的语句;no sql表明子程序不包含sql语句;reads sql data说明子程序包含读数据的语句;modifies sql data表明子程序包含写数据的语句。默认情况下,系统会指定为contains sql。

      4>sql security{definer | invoker}:指明谁有权限来执行。definer表示只有定义者才能执行。invoker表示拥有权限的调用者可以执行。默认情况下,系统指定为definer。

      5>comment ‘string‘:注释信息,可以用来描述存储过程或函数。

    routine_body:sql代码的内容,可以用begin...end;来表示sql代码的开始和结束。

//最简单的存储过程
create
procedure p_get_avg() begin ... end;
//"delimiter //"的作用是将MySQL的结束符设置为//,因为MySQL默认的语句结束符号为分号";",
//为了避免与存储过程中sql语句的结束符相冲突,需要使用delimiter改变存储过程的结束符,并
//"end//"结束存储过程。"delimiter ;"则是恢复默认的";"结束符。
mysql> delimiter // mysql> create procedure p_get_avg() -> begin -> select * from test; -> end// Query OK, 0 rows affected (0.02 sec) mysql> delimiter ;

 

2、存储函数

MySQL-快速入门(8)存储过程、存储函数

标签:简单   query   读数   efi   情况   test   信息   nis   不包含   

原文地址:https://www.cnblogs.com/ZeroMZ/p/11461295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!