沧州网站备案,新闻聚合网站怎么做,wordpress 导航下拉,青岛济南网站建设优化一组为了完成特定功能的sql 语句的集合#xff0c;写好了存储过程之后#xff0c;我们可以向函数一样随时调用sql 的集合 CREATE TABLE info ( id int(3) PRIMARY KEY, name VARCHAR(15), score DECIMAL(5,2), pass varchar(12) ); 创建存储过程
创建过程 delimiter $$ #将语… 一组为了完成特定功能的sql 语句的集合写好了存储过程之后我们可以向函数一样随时调用sql 的集合 CREATE TABLE info ( id int(3) PRIMARY KEY, name VARCHAR(15), score DECIMAL(5,2), pass varchar(12) ); 创建存储过程
创建过程 delimiter $$ #将语句的结束符号从分号临时改变成两个$$ CREATE PROCEDURE proc () #在创建存储过程proc不能重复当前库中唯一。()里面不定义任何方法。 BEGIN #过程开始的关键字 SELECT * from info; #begin后面跟上的是需要执行的sql语句 end $$ #整个语句结束和上面的定义开始符号一一对应 delimiter; #将结束语句的分号恢复 #delimiter 的作用保证整个存储过程的中的sq1语句能够被完整的执行。 查看(两种发法) show procedure status where dbkgc; show procedure status like %proc%; show procedure status where db库名; show procedure status like %函数名%; 调用函数 call 函数名; 删除函数 drop procedure if exists 函数名; 传参 存储过程中参数有三种运用的方式: 1、in 输入参数调用者向存储过程传入值 2、out 输出参数表示存储过程向调用者传出值。(可以返回多个值) 3、inout 表示调用者向存储过程传入值存储过程对传入值可能进行额外的操作之后返回给调用者 输入参数 delimiter $$ create procedure test1 (in uname char(20) ) BEGIN select * from info where name uname; select * from info; update info set name 王浩2 where name uname; end $$ delimiter; call test1(王浩); 数据清洗 执行数据指定入库 drop procedure if exists test1; 传出参数 delimiter $$ create procedure test2 (out num int) BEGIN set num 100; end $$ delimiter; call test2(num); insert into info values(3,王浩,num,是); 输入和输出参数 delimiter $$ create procedure test3 (inout str varchar(10)) begin select str; -- 显示输入的字符 set str concat(str,_ky32); -- 让传入的字符串做一个拼接 select str; -- 加工之后的字符串 end $$ delimiter; set str刘亚伟; call test3(str) update info set namestr where id 1; in:先传入定义变量的值初始值 call test3 调用存储过程把变量的值传入存储过程
if else 存储过程中的控
单参 delimiter $$ create procedure test4 (inout num int) BEGIN if num 10 THEN set numnum-6; else set numnum*2; end if; -- 结束if语句的判断。 set num num ; end $$ delimiter; set num19; call test4(num) update info set id num where score 200; drop procedure if exists test4; 多参数 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 score55; call test7(score,grade); update info set scorescore,passgrade where id 13; while 循环语句
调用多个参数范围的方式匹配完成传参---写入表中 delimiter $$ CREATE PROCEDURE test8 (out result int ) BEGIN declare a int; declare i int; set a 10; set i 1; while i 10 DO set aa10; set ii1; end WHILE; set result a; -- 只是传出一个值 end $$ delimiter; set result110; call test8(result) SELECT result 总结 注意点: 使用存储过程中在内部变量不需要加外部使用和复制要加引用变量。 在存储过程begin之后声明变量: declare 声明变量要加数据类型。 要想使用存储过程里面的结果必须要out才能传出参数。在声明存储变量是要定义好参数的传参方式 in out inout