这些语句创建存储子程序。要在MySQL 5.1中创建子程序,必须具有CREATE ROUTINE权限,并且ALTER ROUTINE和EXECUTE权限被自动授予它的创建者。如果二进制日志功能被允许,你也可能需要SUPER权限,请参阅20.4节,“存储子程序和触发程序的二进制日志功能”。

默认地,子程序与当前数据库教程关联。要明确地把子程序与一个给定数据库关联起来,可以在创建子程序的时候指定其名字为db_name.sp_name。

如果子程序名和内建的SQL函数名一样,定义子程序时,你需要在这个名字和随后括号中间插入一个空格,否则发生语法错误。当你随后调用子程序的时候也要插入。为此,即使有可能出现这种情况,我们还是建议最好避免给你自己的存储子程序取与存在的SQL函数一样的名字。

由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词 OUT或INOUT

注意: 指定参数为IN, OUT, 或INOUT 只对PROCEDURE是合法的。(FUNCTION参数总是被认为是IN参数)

RETURNS字句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句

mysql教程> delimiter $$

mysql>

mysql> CREATE FUNCTION myFunction(

->         in_title VARCHAR(4),

->         in_gender CHAR(1),

->         in_firstname     VARCHAR(20),

->         in_middle_initial CHAR(1),

->         in_surname       VARCHAR(20))

->

->   RETURNS VARCHAR(60)

-> BEGIN

->   DECLARE l_title               VARCHAR(4);

->   DECLARE l_name_string         VARCHAR(60);

->

->   IF ISNULL(in_title)  THEN

->      IF in_gender='M' THEN

->         SET l_title='Mr';

->      ELSE

->         SET l_title='Ms';

->      END IF;

->   END IF;

->

->   IF ISNULL(in_middle_initial) THEN

->      SET l_name_string=CONCAT(l_title,' ',in_firstname,' ',in_surname);

->   ELSE

->      SET l_name_string=CONCAT(l_title,' ',in_firstname,' ',

->                           in_middle_initial,' ',in_surname);

->   END IF;

->

->   RETURN(l_name_string);

-> END$$

Query OK, 0 rows affected (0.00 sec)

mysql>

mysql> delimiter ;

mysql>

mysql> select myFunction('Mrs','M','First','Middle','Last');

+-----------------------------------------------+

| myFunction('Mrs','M','First','Middle','Last') |

+-----------------------------------------------+

| NULL                                          |

+-----------------------------------------------+

1 row in set, 1 warning (0.00 sec)

mysql>

mysql>

mysql> select myFunction(null,'M','First','Middle','Last');

+----------------------------------------------+

| myFunction(null,'M','First','Middle','Last') |

+----------------------------------------------+

| Mr First M Last                              |

+----------------------------------------------+

1 row in set, 1 warning (0.00 sec)

mysql>

mysql> drop function myFunction;

Query OK, 0 rows affected (0.00 sec)

mysql>

mysql>

注:可能受到系统影响

受影响系统:

MySQL AB MySQL 4.1.5

MySQL AB MySQL 4.1.4

MySQL AB MySQL 4.1.3-beta

MySQL AB MySQL 4.1.3-0

MySQL AB MySQL 4.1.2-alpha

MySQL AB MySQL 4.1.0-alpha

MySQL AB MySQL 4.1.0-0

MySQL AB MySQL 4.0.9-gamma

MySQL AB MySQL 4.0.9

MySQL AB MySQL 4.0.8-gamma

MySQL AB MySQL 4.0.8

MySQL AB MySQL 4.0.7-gamma

MySQL AB MySQL 4.0.7

MySQL AB MySQL 4.0.6

MySQL AB MySQL 4.0.5a

MySQL AB MySQL 4.0.5

MySQL AB MySQL 4.0.4

MySQL AB MySQL 4.0.3

MySQL AB MySQL 4.0.21

MySQL AB MySQL 4.0.20

MySQL AB MySQL 4.0.2

MySQL AB MySQL 4.0.18

MySQL AB MySQL 4.0.15

MySQL AB MySQL 4.0.14

MySQL AB MySQL 4.0.13

MySQL AB MySQL 4.0.12

MySQL AB MySQL 4.0.11-gamma

MySQL AB MySQL 4.0.11

MySQL AB MySQL 4.0.10

MySQL AB MySQL 4.0.1

MySQL AB MySQL 4.0.0

不受影响系统:

MySQL AB MySQL 4.1.10a

MySQL AB MySQL 4.0.24

mysql函数创建与使用_mysql function函数创建与应用方法相关推荐

  1. mysql聚合函数能不能嵌套_Mysql 聚合函数嵌套使用操作

    目的:mysql 聚合函数嵌套使用 聚合函数不可以直接嵌套使用,比如: max(count(*)) 但是可以嵌套子查询使用 eg: 注:后面那个 as 必须要写 select max(total) f ...

  2. mysql怎么自定义一个函数调用_MySQL自定义函数编写

    需求:对于数据库中的记录,如果有两条连续的数据的value字段的值相同,则发邮件通知相关人员. 需求分析:告警系统里面的告警检查是通过SQL来进行的,一般的SQL实现不了此功能,因此,这里可以通过函数 ...

  3. function函数的用法c语言,function函数

    function()函数的具体用法 请大侠具体告知,高分赠送. function()函数语法: function 函数名(参数1 [参数2]) { 函数体 return 返回值 } 举例: javas ...

  4. mysql选出重复的字段_mysql查询表里的重复数据方法:

    INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11') delete from hk_test  ...

  5. mysql创建函数执行sql语句_MySQL mysql_query 函数执行SQL语句

    mysql_query()函数 PHP MySQL 函数库中,mysql_query() 函数用于向 MySQL 发送并执行 SQL 语句. 对于没有数据返回结果集的 SQL ,如 UPDATE.DE ...

  6. mysql该账户已存在_mysql 查看函数的所属用户和已存在的函数

    复现方式: Delete FROM user Where User='test' and Host='%'; flush privileges; 修复流程: 1.用root用户删除两个函数,语句分别为 ...

  7. mysql curdate去掉横杠_MySQL CURDATE() 函数 - Break易站

    MySQL CURDATE() 函数 MySQL Date 函数 定义和用法 CURDATE() 返回当前的日期. 语法 CURDATE() 实例 下面是 SELECT 语句: SELECT NOW( ...

  8. mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...

  9. mysql datediff多一天_MySQL DATEDIFF函数获取两个日期的时间间隔的方法

    描述 返回两个日期之间的时间间隔. 语法 DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] ) DateDi ...

最新文章

  1. Bootstrap的x-editable行编辑
  2. matlab中对伺服电机,基于Matlab的伺服电机Modbus通讯研究
  3. Zabbix 3.0 部署监控 [二]
  4. 隐藏版本信息号返回服务器名,Apache服务器隐藏版本号和系统
  5. 解决anaconda下载很慢
  6. Ace Admin中表格按钮的使用方法——表格导出为xls、pdf,表格打印预览等
  7. Kali-linux:masscan命令
  8. ASP.NET教师排课系统
  9. 提示猜数字范围python_Python 猜数字游戏
  10. AJAX避免用户重复提交请求
  11. 【SGD深入理解】vanilia SGDmomentum SGD
  12. 树莓派4B安装tensorflow2.0.0和keras2.3.1
  13. 关于K8s中Pod调度[选择器,指定节点,主机亲和性]方式和节点[coedon,drain,taint]标记的Demo
  14. 【转载】阿里云服务器忘记了实例密码怎么办
  15. 问卷网自动填写提交调查问卷
  16. 芒果PPT助手功能介绍
  17. 全球及中国植物甾醇羟基硬脂酸酯行业发展应用与投资潜力分析报告2022版
  18. 高并发,你真的理解透彻了吗?
  19. ifconfig命令的使用方式
  20. 我用 Python 写了一款炫酷音乐播放器,想听啥随便搜!

热门文章

  1. JMetro版本11.6.8和8.6.8发布
  2. java8 base64_Java 8中的Base64 –加入乐趣为时不晚
  3. JDK Bug系统浪费时间
  4. jmeter实现翻页功能_JMeter定制功能实现
  5. gradle 安装_如何安装Gradle
  6. 引入ReactiveInflux:用于Scala和Java的无阻塞InfluxDB驱动程序,支持Apache Spark
  7. MySQL JDBC驱动程序如何处理准备好的语句
  8. 在Log4j2中更好地执行非日志记录器调用
  9. hornetq_Spring 3 HornetQ 2.1集成教程
  10. spring依赖注入_Spring依赖注入技术的发展