与
ESC
输入关键词搜索文章

MySql创建/删除函数和存储过程

全文约 550 字预计阅读 2 分钟
切记创建函数或过程的时候不要用phpmyadmin,不然有可能出错!
一、查看创建函数的功能是否开启: mysql> show variables like '%func%'; +-----------------------------------------+-------+ | Variable_name | Value | +-----------------------------------------+-------+ | log_bin_trust_function_creators | ON | +-----------------------------------------+-------+ 1 row in set (0.02 sec)
二、如果Value处值为OFF,则需将其开启。 mysql> set global log_bin_trust_function_creators=1;
三、创建函数时,先选择数据库, mysql> use xxx; Database changed delimiter $$是设置 $$为命令终止符号,代替分号,因为分号在begin...end中会用到; mysql> delimiter $$ CREATE FUNCTION first_func(param1 varchar(5),parmam2 varchar(5),param3 varchar(10)) RETURNS TINYINT BEGIN RETURN 1; END $$ //函数创建成功后需恢复分号为命令终止符号。 mysql> delimiter ;
四、测试: mysql> select first_func('aaa','bbb','ccc'); +-------------------------------+ | first_func('aaa','bbb','ccc') | +-------------------------------+ | 1 | +-------------------------------+ 1 row in set (0.47 sec)
五、删除函数: mysql> drop function first_func ; Query OK, 0 rows affected (0.11 sec)
六、查看函数 1) show function status 显示数据库中所有函数的基本信息 2)查看某个具体函数 mysql>show create function function;
创建存储过程 1.进入mysql命令行 mysql> 2.用delimiter命令来把语句定界符从 ;变为//。这样就允许在程序体用;定界符传递到服务器,而不是被mysql自己来解释。 mysql> delimiter // 3.创建存储过程
mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END -> // Query OK, 0 rows affected (0.00 sec)mysql> delimiter ; mysql> CALL simpleproc(@a); Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @a; +------+ | @a | +------+ | 3 | +------+ 1 row in set (0.00 sec)
删除存储过程num_from_employee的代码如下: DROP  PROCEDURE  num_from_employee ;
删除存储函数name_from_employee的代码如下: DROP  FUNCTION  name_from_employee ;
附带生成随机数函数:
delimiter // drop function if exists rand_strings; create function rand_strings(str_length tinyint unsigned , str_type tinyint unsigned) returns varchar(255) begin declare counter int unsigned default 0; declare const_chars varchar(64) default '0123456789'; declare result varchar(255) default ''; if str_type = 1 then set const_chars = '0123456789'; elseif str_type = 2 then set const_chars = 'abcdefghijklmnopqrstuvwxyz'; elseif str_type = 3 then set const_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; elseif str_type = 4 then set const_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; elseif str_type = 5 then set const_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; elseif str_type = 6 then set const_chars = '0123456789abcdefghijklmnopqrstuvwxyz'; elseif str_type = 7 then set const_chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; else set const_chars = '0123456789'; end if; while counter < str_length do set result = concat(result,substr(const_chars,ceil(rand()*(length(const_chars)-1)),1)); set counter = counter + 1; end while; return result; end // DELIMITER ;
MySql创建/删除函数和存储过程
分享

发表评论

评论 0 条

暂无评论,来说点什么吧。