触发器能建立在视图上吗,触发器可以创建在哪个选项中

首页 > 实用技巧 > 作者:YD1662024-01-08 21:53:44

注意: 用户定义的变量无需对其进行声明或初始化,只不过获取到的值为null。

3、局部变量

局部变量是根据需要定义的在局部生效的变量,访问之前,需要declare声明,可用 作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的begin...end块。

声明: declare 变量名 变量类型 [default ...]; 其中变量类型就是数据库字段类型

赋值: set 变量名=值; set 变量名 := 值; select 字段名 into 变量名 from 表名 ...;

# 在存储过程中 声明一个stu_count局部变量,然后赋值及展示 create PROCEDURE pk2() BEGIN DECLARE stu_count int default 0; SELECT count(*) into stu_count from king_user; SELECT stu_count; END; CALL pk2();

触发器能建立在视图上吗,触发器可以创建在哪个选项中(13)

if 条件判断的语法

if 条件1 then 。。。 elseif 条件2 then 。。。 else 。。。 end if; # 判断 小明分数 例子 create PROCEDURE pk3() BEGIN DECLARE score int default 58; DECLARE result VARCHAR(10); if score >= 85 THEN set result := '优秀'; elseif score >= 60 THEN set result := '及格'; ELSE set result := '不及格'; end if; select result; end; # 结果为不及格;定义了score 默认值为58,此处代码不灵活 call pk3();

存储过程的参数:

in: 该参数作为输入,也就是需要调用时传入。

out: 该类参数作为输出,也就是该参数可以作为返回值。

inout: 既可以作为输入参数,也可以作为输出参数。

用法:

create procedure 存储过程名([in/out/inout 参数名 参数类型])

begin

SQL语句

end;

# 使用传参的方式 create PROCEDURE pk4(in score int,out result varchar(10)) BEGIN #DECLARE score int default 58; #DECLARE result VARCHAR(10); if score >= 85 THEN set result := '优秀'; elseif score >= 60 THEN set result := '及格'; ELSE set result := '不及格'; end if; select result; end; # 传参测试 CALL pk4(80, @result); select @result;

触发器能建立在视图上吗,触发器可以创建在哪个选项中(14)

存储过程中的case|while 语句

case case_value when when_value1 then 语句1 when when_value2 then 语句2 else 其它语句 end case; 语法2: case when search_condition1 then 语句1 when search_condition2 then 语句2 else 其它语句 end case;

案例: 使用存储过程实现,根据传入的月份,判定月份所属的季节(case结构实现)

1、1~3 月为第一季度

2、4~6月为第二季度

3、7~9月为第三季度

4、10~12月为第四季度

create PROCEDURE pk5(in month int) BEGIN DECLARE result VARCHAR(10); CASE WHEN month >=1 and month <=3 THEN set result := '第一季度'; WHEN month >=4 and month <=6 THEN set result := '第二季度'; WHEN month >=7 and month <=9 THEN set result := '第三季度'; WHEN month >=10 and month <=12 THEN set result := '第四季度'; ELSE set result := '非法参数'; end case; select CONCAT('输入的月份是: ',month,',所属的季度是: ',result); end; # 传参 call pk(11);

触发器能建立在视图上吗,触发器可以创建在哪个选项中(15)

while循环是有条件的循环控制语句,满足条件后,再执行循环体中的SQL语句,语法如下:

while 条件

dosql 逻辑。。。

end while

create PROCEDURE pk6(in n int) BEGIN DECLARE total int default 0; WHILE n>0 DO set total := total n; set n := n-1; end WHILE; SELECT total; end; call pk6(10)

触发器能建立在视图上吗,触发器可以创建在哪个选项中(16)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.