11)-MySQL存储过程
时间:2021-07-01 10:21:17
帮助过:3人阅读
delimiter //
create procedure productpricing()
begin
select avg(prod_price) as priceaverage
from products;
end //
delimiter ;
DELIMITER//告诉命令行实用程序使用//作为新的语句结束分隔符
可以看到标志存储过程结束的END定义为END//而不是END;
这样,存储过程体内的;仍然保持不动,并且正确地传递给数据库引擎。
最后,为恢复为原来的语句分隔符,可使用DELIMITER;。
调取存储过程
call avg_student() #通过关键词call调取存储过程名称
# 因为存储过程实际上是一种函数,所以存储过程名后需要有()符号(即使不传递参数也需要)。
删除存储过程
drop procedure productpricing;
这条语句删除刚创建的存储过程。请注意没有使用后面的(),只给出存储过程名。
检查存储过程
show create procedure ordertotal;
存储过程例子(1)
create procedure ordertotal(
in onumber int, #in 用来接收用户输入
out ototal decimal(8,2) #out用来返回用户输入
)
begin
select sum(item_price*quantity)
from orderitems
where order_num = onumber
into ototal; #into用来接收值
end;
调取
CALL ordertotal(20005, @total);
存储过程例子(2)
create procedure ordertotal(
in onumber int, #接收用户值
in taxable boolean,
out ototal decimal(8,2) #返回值
)
begin
declare total decimal(8,2); #定义局部变量
declare taxrate int default 6; #定义局部变量
select sum(item_price*quantity)
from orderitems
where order_num = onumber
into total; #存储值
if taxable then #if判断
select total+(total/100*taxrate) into total;
end if;
select total into ototal;
end;
调取
call ordertotal(20005, 0, @total);
select @total;
11)-MySQL存储过程
标签:用户 create rate efault family bsp 结束 order The