mysql自定义函数用if报1064_MySQL自定义函数出现的问题

本文展示了如何在MySQL中创建和使用自定义函数,包括myFunction()和dotest()。myFunction()函数用于生成随机的中文姓名组合,而dotest()则在一个循环中调用myFunction()。在示例中,dotest()的创建过程中遇到了语法错误,可能是因为语句的结构问题。
摘要由CSDN通过智能技术生成

DROPFUNCTIONIFEXISTSmyFunction;delimiter$$CREATEFUNCTIONmyFunction()RETURNSVARCHAR(4)BEGINDECLAREfirst_name_listCHAR(32)DEFAULT'赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨';DECLAREl...

DROP FUNCTION IF EXISTS myFunction;

delimiter $$

CREATE FUNCTION myFunction() RETURNS VARCHAR(4)

BEGIN

DECLARE first_name_list CHAR(32) DEFAULT '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨';

DECLARE last_name_list CHAR(20) DEFAULT '甲乙丙丁戊己庚辛壬癸';

DECLARE full_name CHAR(2);

SET full_name =

CONCAT(SUBSTRING(first_name_list, FLOOR(RAND()*16+1), 1),

SUBSTRING(last_name_list, FLOOR(RAND()*10+1), 1));

RETURN full_name;

END $$

delimiter ;

DROP FUNCTION IF EXISTS dotest;

delimiter $$

CREATE FUNCTION dotest()

BEGIN

DECLARE i INT;

SET i = 10;

WHILE i <= 10 DO

SELECT myFunction();

SET i = i + 1;

END WHILE;

END $$

delimiter ;

SELECT dotest();

代码不能格式化, 大侠们将就着看一下吧...

第一个函数执行没问题, 第二个报错如下:

[SQL]

DROP FUNCTION IF EXISTS dotest;

受影响的行: 0

时间: 0.000s

[SQL]

CREATE FUNCTION dotest()

BEGIN

DECLARE i INT;

SET i = 10;

WHILE i <= 10 DO

SELECT myFunction();

SET i = i + 1;

END WHILE;

END ;

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN

DECLARE i INT;

SET i = 10;

WHILE i <= 10 DO

SELECT myFunction();

' at line 2

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值