mysql自定义函数(3)条件控制语句

1、if语句:

drop function if exists hello;  --删除函数
create function hello(a int) returns varchar (255)   --创建函数,并且有一个int类型名称为a的变量
begin
	declare x varchar(255) default ' x  ';
	select `name` into x from gl_dept where id = a;
	-- if开始
	if x = '淘宝网店2' THEN set	x = '2';
	elseif x = '淘宝网店3' THEN set	x = '3';
	else set x = '5';
	end if; -- if结束
	return x;
end;

2、case when语句:

drop function if exists hello;
create function hello(a int) returns varchar (255)
begin
	declare x varchar(255) default ' x  ';
	declare y varchar(255);
	select `name` into x from gl_dept where id = a;
	-- 开始
	case 
		when x = '淘宝网店1' then set y = '你好';
		when x = '淘宝网店2' then set y = '你好1';
		else set y = '你好2' ;
	end case; -- 结束
	return y;
end;

上面的这两个语句,和直接在sql里面写的时候,是有些区别的。sql里面的if和case when结尾和在自定义函数里面是不同的,要注意。

3、loop循环语句(无条件循环,就是不需要条件就可以进入循环):

drop function if exists hello;
create function hello(a int) returns varchar (255)
begin
	declare x int;
	declare y int;
	set y = a;
	-- 开始循环
	myloop:loop 
		set y = y - 1;
		-- if这里是满足条件后,用来跳出循环用的。
		if y = 1 then  
			leave myloop;
		end if;
	end loop; -- 结束循环
	return y;
end;

上面的”myloop“是声明这个循环的名字,跳出循环的时候用,”leave“,是用来跳出循环的,

4、while do 循环(有条件循环,就是必须要有条件才可以进入循环):

drop function if exists hello;
create function hello(a int) returns varchar (255)
begin
	declare x int;
	declare y int;
	set y = a;
	-- 开始循环
	while y < 10 do 
		set y = y + 1;
	end while; -- 结束循环
	return y;
end;

自定义函数里面可以加入sql语句,可以加入mysql本身的一些函数,如sunm,count等等。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL自定义函数是不允许使用ALTER语句的。因为自定义函数的主要作用是返回一个值,而不是执行修改数据库结构的操作。 如果您需要在MySQL执行修改数据库结构的操作,并且需要将表名作为变量传入,可以考虑使用存储过程或触发器来实现。存储过程和触发器可以在MySQL执行修改数据库结构的操作,并且可以传递变量作为参数。 以下是一个使用存储过程在MySQL执行ALTER语句的示例: 1. 定义存储过程,声明变量: ``` DELIMITER $$ CREATE PROCEDURE add_column(IN table_name VARCHAR(50), IN column_name VARCHAR(50), IN column_type VARCHAR(50)) BEGIN DECLARE alter_stmt VARCHAR(1000); ``` 2. 构建ALTER语句,使用变量替代表名和列名: ``` SET alter_stmt = CONCAT('ALTER TABLE ', table_name, ' ADD COLUMN ', column_name, ' ', column_type); ``` 3. 执行ALTER语句: ``` PREPARE stmt FROM alter_stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; END $$ DELIMITER ; ``` 在上述存储过程,我们定义了三个输入参数:表名、列名和列的数据类型。然后,我们声明了一个`alter_stmt`变量,用于存储ALTER语句。在构建ALTER语句时,我们使用`CONCAT()`函数将变量替代表名和列名。最后,我们使用`PREPARE/EXECUTE/DEALLOCATE PREPARE`语句执行ALTER语句。 这样,我们就可以在存储过程传入变量表名,并使用到ALTER语句了。调用该存储过程时,只需要传入正确的参数即可。例如: ``` CALL add_column('my_table', 'new_col', 'VARCHAR(50)'); ``` 这个例子,我们向名为`my_table`的表添加一列名为`new_col`,类型为`VARCHAR(50)`的新列。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值