mysql 创建function

      mysql 的function和procedure 仅对5.0版本后的有效(包括show function status等命令是没用的)


以创建function为例,存储过程和这个差不多,懒得打字了

     首先先在mysql 下运行 set global log_bin_trust_function_creators=TRUE;  这句话是把创建函数的权限打开,不然会报错的

     然后可以写程序了,mysql的语法比较奇特(与oracle相比)

  

DELIMITER $$
create function fn_get_work_date(next_date date,pre_date date)
returns int

begin 
  DECLARE v_re int;
select count(*) into v_re from old.calendar where yymmdd>=pre_date and yymmdd<=next_date and code=0;
return v_re;
end $$

DELIMITER 百度了一下:

MySQL中delimit命令。这个命令与 存储过程没什么关系。
其实就是告诉 mysql 解释器,该段命令是否已经结束了,mysql是否可以执行了。
即改变输入结束符。默认情况下,delimiter是分号“ ;”
在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。但有时候,不希望MySQL这么做。因为可能输入较多的语句,且语句中包含有分号。
默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。因为mysql一遇到分号,它就要自动执行。这种情况下,就可以使用delimiter,把delimiter后面换成其它符号,如//或$$。
此时,delimiter作用就是对整个小段语句做一个简单的封装。

     把它理解成格式吧,接下来是定义创建函数的名字和输入输出
     从begin开始,定义变量时,每个变量之前都必须加declare,如  DECLARE v_re1 int;  DECLARE v_re2 int; 这个和oracle只要写一遍declare不一样
     其他的sql语句照写,结束时end $$ 一下就好了。

    按下执行后就可以看到结果了


   比较蛋疼的是,mysql好像不能编辑你写过的function ,如果要编辑必须先删掉 drop function if exists 'your_function_name'  ,然后再建

  
   可以使用show function/procedure status 查看mysql上存在的function和procedure



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值