mariaDB 创建函数实践demo(一)

以下demo代码在mariaDB 5.5.58 + SQLyog 10.2下测试通过。

1.简单的传入要插入的参数,执行sql插入示例

1)创建函数

在SQLyog中写出以下代码并执行:

DELIMITER //  /*将mysql默认的定界符改为“//”,这样就可以在下面的函数中使用“;”了*/
DROP FUNCTION IF EXISTS insertItemTwo//   /*先事先删除该函数*/
CREATE FUNCTION insertItemTwo(username VARCHAR(20),record VARCHAR(20),number INT) RETURNS VARCHAR(20)
BEGIN
INSERT INTO item VALUES(NULL,username,record,number);
RETURN 'success';
END
//
DELIMITER ;

注:在创建函数的时候,报了一个错误:

Thisfunction has none of DETERMINISTIC, NO SQL, or READS SQL DATA in itsdeclaration and binary log

在网上查了一下,原因是mysql默认不允许创建函数。只要执行这句话就行了:

SETGLOBAL log_bin_trust_function_creators = 1;


2)调用函数

再打开一个查询窗口,执行

SELECT insertItemTwo('asd','ffff',123);

结果:



2. 将指定数据循环插入若干次的函数

2.1 while do语句

1)创建

DELIMITER //
DROP FUNCTION insertItem5//
CREATE FUNCTION insertItem5(username VARCHAR(20),record VARCHAR(20),number INT,loopNumber INT) RETURNS VARCHAR(200)
BEGIN
DECLARE flage INT DEFAULT 0;
WHILE flage < loopNumber DO
INSERT INTO  item VALUES(NULL,username,record,number);
SET flage = flage + 1;
END WHILE;
RETURN CONCAT('success insert ',flage,' rows!') ;
END
//
DELIMITER ;

2)调用

SELECT insertItem5('jkjkjk','ddfggh',123,10);

结果:

2.2 loop语句

1)创建

DELIMITER //
DROP FUNCTION IF EXISTS insertItem6//
CREATE FUNCTION insertItem6(username VARCHAR(20),record VARCHAR(20),number INT,loopNumber INT) RETURNS VARCHAR(200)
BEGIN
    DECLARE flage INT DEFAULT 0;
		loop_example:LOOP
			SET flage = flage + 1;
			IF flage > loopNumber THEN
				LEAVE loop_example;
			ELSE
				INSERT INTO  item VALUES(NULL,CONCAT(username,flage),record,number);
			END IF;
		END LOOP;
	RETURN CONCAT('success insert ',flage,' rows!') ;
END
//
DELIMITER ;

2) 调用

SELECT insertItem6('jkjkjk','ddfggh',123,10);

结果:



2.3 repeat

1)创建

DELIMITER //
DROP FUNCTION IF EXISTS insertItem7//
CREATE FUNCTION insertItem7(username VARCHAR(20),record VARCHAR(20),number INT,loopNumber INT) RETURNS VARCHAR(200)
BEGIN
    DECLARE flage INT DEFAULT 0;
		REPEAT
			SET flage = flage + 1;
			INSERT INTO  item VALUES(NULL,CONCAT(username,flage),record,number);
			UNTIL flage >= loopNumber
		END REPEAT;
	RETURN CONCAT('success insert ',flage,' rows!') ;
END
//
DELIMITER ;

2)调用

SELECT insertItem7('jkjkjk','ddfggh',123,10);

结果:




总结:

1. 上面的内容通过对loop、while、repeat的循环语句,if else的条件判断语句的简单使用,演示了函数的创建,基本语法:

CREATE FUNCTION([参数名与类型])[returns type]

2. 调用:

select 函数名字(参数...)

3. 同时要注意定界符号的修改与恢复呦:“;”。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值