网站改版文案,2018怎么做网站淘宝客,婚纱网站模板,腾讯云服务器cvm1.存储过程
存储过程#xff08;Stored Procedure#xff09;是一组为了完成特定功能的SQL语句集#xff0c;经编译后存储在数据库中#xff0c;用户通过指定存储过程的名字并给定参数#xff08;如果该存储过程带有参数#xff09;来调用执行它。
2.MySQL存储过程创建…1.存储过程
存储过程Stored Procedure是一组为了完成特定功能的SQL语句集经编译后存储在数据库中用户通过指定存储过程的名字并给定参数如果该存储过程带有参数来调用执行它。
2.MySQL存储过程创建
1.语法
#创建存储过程
CREATE PROCEDURE 存储过程名 ([[IN|OUT|INOUT]] 参数名 数据类型) 过程体;#删除存储过程
DROP PROCEDURE IF EXISTS 存储过程名;#删除存储过程
DROP PROCEDURE IF EXISTS adduser;#创建存储过程
CREATE PROCEDURE adduser(num DOUBLE)
BEGINUPDATE user SET money money - num WHERE name 张三;UPDATE user SET money money num WHERE name 李四;
END;2.过程体
BEGIN过程体
END;过程体每条SQL语句用;隔开3.参数
IN
不管存储过程里面的参数怎么改变都不影响外部变量。 OUT
不管参数传入之前的定义是什么在存储过程中都为null。 存储过程里面对参数的改变都会影响外部变量。 INOUT
参数在外部定义后会将定义的变量传入。
存储过程里面对参数改变都会影响外部的变量。
#IN0
CREATE PROCEDURE add2(IN num INT(20))
BEGINSET num 111;SELECT num;
END;SET a 123;
CALL add2(a);
SELECT a;#OUT
CREATE PROCEDURE add3(OUT num INT(20))
BEGINSELECT num;SET num 111;
END;SET a 123;
CALL add3(a);
SELECT a;#INOUT
CREATE PROCEDURE add3(INOUT num INT(20))
BEGINSELECT num;SET num 111;SELECT num;
END;SET a 123;
CALL add3(a);
SELECT a;4.变量
使用 DECLARE 定义变量只能在存储过程、函数或触发器中使用。
变量赋值
1.使用 DEFAULT 默认赋值。
2.使用 SET 赋值。
3.使用 SELECT…INTO… 赋值。
DROP PROCEDURE IF EXISTS add1;
CREATE PROCEDURE add1()
BEGIN#默认值DECLARE a INT(20) DEFAULT 1;DECLARE b INT(20);DECLARE c VARCHAR(255);#使用set为变量赋值SET b 2;SELECT a;SELECT b;#使用SELECT...INTO...为变量赋值SELECT name INTO c FROM user WHERE id 1; SELECT c;
END;CALL add1();用户变量
用于在 SQL 语句和存储过程之间传递数据。
用法
变量名
在使用用户变量之前最好先初始化它否则它的值将是 null。
变量作用域
内部变量在其作用域范围内享有更高的优先权当执行到end时内部变量消失不再可见了在存储过程外再也找不到这个内部变量但是可以通过out参数或者将其值指派给会话变量来保存其值。
5.调用存储过程
CALL 存储过程名;6.分隔符
MySQL默认以;为分隔符如果没有声明分割符则编译器会把存储过程当成SQL语句进行处理因此编译过程会报错。所以要事先用 “DELIMITER //” 声明当前段分隔符让编译器把两个 “//” 之间的内容当做存储过程的代码不会执行这些代码。“DELIMITER ;” 的意为把分隔符还原。
3.MySQL存储过程的控制语句
1.条件语句
IF-THEN-ELSE语句
IF 条件 THENSQL语句;
END IF;CREATE PROCEDURE methods()
BEGINDECLARE a INT;SET a 1;IF a 1 THENSELECT a;END IF;
END;CALL methods();CASE-WHEN-THEN-ELSE语句
CASE 变量名WHEN 值1 THENSQL语句;WHEN 值2 THENSQL语句;ELSESQL语句;
END CASE;CREATE PROCEDURE methods()
BEGINDECLARE a INT;SET a 1;CASE aWHEN 0 THENSELECT 0,a;WHEN 1 THENSELECT 1,a;ELSESELECT ---,a;END CASE;END;CALL methods();2.循环语句
WHILE-DO…END-WHILE语句
WHILE 条件 DOSQL语句;
END WHILE;CREATE PROCEDURE methods()
BEGINDECLARE a INT DEFAULT 0;WHILE a5 DOINSERT INTO user (name,money) VALUES (李明,1000);SET aa1;END WHILE;
END;CALL methods();