东莞哪里有网站建设厂家,调研报告,佛山seo优化外包,电子商务网站建设与维护 答案存储过程#xff1a;是一组为了完成特定功能的sql语句的集合#xff0c;类似于函数
写好一个存储过程之后#xff0c;我们可以像函数一样随时可以调用sql的集合 复杂的#xff0c;需要很多sql语句联合执行完成的任务
存储过程在执行上比sql语句执行速度快#xff0c;效率…存储过程是一组为了完成特定功能的sql语句的集合类似于函数
写好一个存储过程之后我们可以像函数一样随时可以调用sql的集合 复杂的需要很多sql语句联合执行完成的任务
存储过程在执行上比sql语句执行速度快效率也更高 创建存储过程
delimiter $$
将语句的结束符号从分号临时改变成两个$$
create procedure proc ()
创建存储过程。proc存储过程的名字在当前库中唯一。中不定义任何方法
begin
过程体开始的关键字
select * from info;
begin后面跟上的是需要执行的sql语句
end $$
整个语句结束和上面的定义看i是符号$$一一对应
delimiter;
将结束语句的分号恢复 delimiter的作用保证整个存储过程中的sql语句能够被完整的执行 注释
# 井号键
-- :--加空格 show procedure status where dbfmh; show procedure status like %proc%; call proc; drop PROCEDURE if EXISTS proc; 存储过程中参数有三种运用的方式
1、in 输入参数
调用者向存储过程传入值
delimiter $$
create PROCEDURE test1 (in uname char(20) )
BEGIN
select * from info where name uname;
select * from info;
update info set name 吴少 where nameuname;
end $$
delimiter; call test1(吴少); 2、out 输出参数
表示存储过程向调用者传出值可以返回多个值
delimiter $$
create PROCEDURE test2 (out num int)
BEGIN
set num 100;
end $$
delimiter; call test2(num); insert into info values(2,少爷,num,是); 3、inout
表示调用者向存储过程传入值存储过程对传入值可能进行额外的操作之后返回给调用者
delimiter $$
create PROCEDURE test3 (INOUT str varchar(10))
BEGIN
select str;
-- 显示输入的字符
set str concat(str,_abc);
-- 让传入的字符串做一个拼接
select str;
-- 加工之后的字符串
end $$
delimiter;
set str千金;
call test3(str)
UPDATE info set namestr where id 1; 过程
in:先传入定义变量的值初始值
call test3 调用存储过程把变量的值传入存储过程
str千金_abc 存储过程中的控制语句
delimiter $$
create PROCEDURE test5 (inout num int)
BEGIN
if num 10 THEN
set numnum-6;
ELSE
set numnum*2;
end if;
-- 结束if语句的判断
set num num;
end $$
delimiter; set num5;
call test5(num)
update info set id num where score 100; 调用多个参数: 范围的方式匹配完成传参-----写入表中
delimiter $$
create PROCEDURE test7(inout score int,out grade varchar(15))
BEGIN if score between 85 and 100 then set grade 优秀; ELSEIF score between 60 and 84 then SET grade 一般; ELSE set grade 不及格; end if; select grade;
end $$
delimiter;
set score95;
call test7(score,grade);
update info set scorescore,passgrade where id 10; while循环语句
delimiter $$
create PROCEDURE test8 (out result int)
BEGIN
DECLARE a INT;
DECLARE i INT;
set a10;
set i1;
while i10 do
set aa10;
set ii1;
-- 相当于i
end while;
set result a;
end $$
delimiter;
set result110;
call test8(result)
select result 注意
1、使用存储过程中在内部变量不需要加外部使用和赋值要加,引用变量
2、在存储过程begin之后声明变量:declare a INT; declare i INT; 声明变量要加数据类型
3、要想使用存储过程里面的结果必须要out才能传出参数。在声明存储变量是要定义好参数的传参方式in out INOUT