存储过程参数与触发器

存储过程参数

类型 in out inout
IN 输入参数: 表示该参数的值必须在调用存储过程时指定值, 在存储过程中修改该参数的值不能被返回, 为默认值。
OUT 输出参数: 该值可在存储过程内部被改变, 并可返回。
INOUT输入输出参数: 调用时指定值, 并且可被改变和返回。

存储过程条件语句

if 条件判断 then
语句(true时)
else
语句(false时)
end if;

存储过程多条件判断语句

IF expression THEN

statements;

ELSEIF elseif-expression THEN

elseif-statements;

ELSE

else-statements;

END IF;

存储过程CASE语句

CASE grade 
	
WHEN 'A' THEN
	
	SET result = '成绩A等' ;

WHEN 'B' THEN
	
	SET result = '成绩B等' ;

WHEN 'C' THEN
	
	SET result = '成绩C等' ;

WHEN 'D' THEN 
	
	SET result = '成绩D等' ;

ELSE
		
	SET result = '输入数据错误' ;

END CASE ;

例:查询news表中新闻信息。

CREATE PROCEDURE sp13_2()

BEGIN

    SELECT newsId AS 编号,
 
        CASE

	WHEN topicId=1 THEN '热点新闻'

	WHEN topicId=2 THEN '娱乐新闻'

	WHEN topicId=3 THEN '经济新闻'

	WHEN topicId=4 THEN '体育新闻'

	ELSE '其他新闻'
  
       END AS 新闻 ,
 
     newsTitle 新闻标题, newsAuthor 新闻作者

    FROM news;

 END 

存储过程循环语句

WHILE循环:

WHILE expression DO
   Statements
END WHILE

REPEAT循环:

REPEAT
statements;
UNTIL expression
END REPEAT

while循环和repeat循环的区别

1、while是满足条件才执行循环,repeat是满足条件退出循环
2、while在首次循环执行之前就判断条件,最少执行0次,repeat是在首次执 行循环之后才判断条件,循环至少执行一次。

LOOP循环:

  LOOP_NAME:LOOP

      statements

  END LOOP

中断循环:

LEAVE:停止循环,跳出循环体

ITERATE :中断当前循环,继续后续循环

例:计算1-10间数的和

CREATE PROCEDURE sp15()

BEGIN

	DECLARE sums INT DEFAULT 0 ;

	DECLARE i INT DEFAULT 1 ;

	loop_label: LOOP

		IF i <= 10 THEN

			SET sums = sums + i;

		ELSE

			LEAVE loop_label ;

		END IF ;

		SET i = i + 1 ;
	
END LOOP;

	SELECT sums AS '和' ;

END;  

触发器

 CREATE TRIGGER <trigger_name>   BEFORE|AFTER
INSERT|UPDATE|DELETE  ON <table_name> FOR EACH ROW

BEGIN
	SQL语句;
 END

触发器创建语法四要素:

监视地点:TABLE

监视事件:INSERT , UPDATE , DELETE

触发时间:AFTER , BEFORE

触发事件:SQL语句

OLD、NEW关键字

1.当向表插入新记录时,在触发程序中可以使用NEW关键字表示新记录,
当需要访问新记录的某个字段值时,可以使用“NEW.字段名”的方式访问

2.当从表中删除某条旧记录时,在触发程序中可以使用OLD关键字表示旧记录,
当需要访问旧记录的某个字段值时,可以使用“OLD.字段名”的方式访问。

使用SHOW TRIGERS 命令查看触发器的定义
使用SHOW CREATE TRIGGER 触发器名称 查询指定名触发器的定义
查询触发器
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS;
删除触发器
DROP TRIGGER 触发器名称

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值