sql-2-存储过程

存储过程:

      就是一组sql语句集,用于实现较复杂的逻辑功能,可以理解为Java 语句中的方法,可以接受参数,返回结果集,模块化,封装,代码复用。可以有f/else, case,while等控制语句

      存储过程会先进行编译然后存放在数据库中,后面执行的时候可以直接调用,所以存储过程腰比执行单个的sql语句高效(执行速度快),但也有一些缺点,如:各个数据库的语法不同,不同的数据库,实现相同的存储过程,会有不同的语法去写。

简单的例子:

几点说明,在写存储过程的时候,实用 DELIMITER 去定义输入的结束符号,默认的是 ; DELIMITER // 那么就可以定义结束符号是 //。DEFINER:定义创建者

 

DROP PROCEDURE IF EXISTS proc_adder;
DELIMITER //
CREATE PROCEDURE proc_adder(IN a int, IN b int, OUT sum int)
BEGIN
	DECLARE c int;              变量定义
	if a is null 
		then set a=0;
	end if;
	if b is null
		then set b=0;
	end if;
	set sum = a + b;
	
END
//
DELIMITER ; 

set @b=5;                         变量赋值
call proc_adder(2,3, @b);
select @b as sum;

控制语句:

IF

DROP PROCEDURE IF EXISTS proc_if;
DELIMITER //
CREATE PROCEDURE proc_if(IN type int)
BEGIN
	DECLARE c varchar(500);
	IF TYPE = 0 THEN
		set  c = 'param is 0';
	ELSEIF type=1 THEN
		set c = 'param is 1';
	ELSE
		set c = "param is others";
	END IF;
	select c;
END 
// 
DELIMITER ; 

call proc_if(4);

CASE

DROP PROCEDURE IF EXISTS proc_case;
DELIMITER //
CREATE PROCEDURE proc_case(IN type int)
BEGIN
	DECLARE c varchar(500);
	CASE TYPE
	WHEN 0 THEN
		set c = "param 0";
	WHEN 1 THEN
		set c = "param 1";
	ELSE
		set c = "param other";
	END CASE;
	select c;
END 
// 
DELIMITER ;

call proc_case(0);

WHILE

DROP PROCEDURE IF EXISTS proc_while;
DELIMITER //
CREATE PROCEDURE proc_while(IN num int)
BEGIN
	DECLARE i int;
	DECLARE j int;
	set i = 0;
	set j = 0;
	WHILE i<= num DO
		set j = j + i;
		set i = i + 1;
	END WHILE;
	select j;
END
// 
DELIMITER ;

call proc_while(10);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值