赞
踩
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
特点
创建
CREATE PROCEDURE 存储过程名称([参数列表])
BEGIN
-- SQL语句
END;
调用
CALL 存储过程名称([参数]);
查询整个存储过程的定义
SHOW CREATE PROCEDURE 存储过程名称;
删除
DROP PROCEDURE [IF EXISTS] 存储过程名称;
变量赋值:
SET @p_in=1
1、介绍
系统变量时MySQL服务器提供,不是用户定义的,属于服务器层面。
可分为:全局变量(GLOBAL)、会话变量(SESSION)。
全局变量在所有会话中有效,会话变量仅在当前会话中有效。
2、语法:
查看系统变量
-- 查看所有系统变量
SHOW [SESSION | GLOBAL] VARIABLES;
-- 可以通过like模糊匹配方式查找变量
SHOW [SESSION | GLOBAL] VARIABLES LIKE '...';
-- 查看指定变量的值
SELECT @@[SESSION. | GLOBAL.] 系统变量名;
设置系统变量
SET [SESSION | GLOBAL] 系统变量名 = 值;
SET @@[SESSION. | GLOBAL.]系统变量名 = 值;
1、介绍
局部变量是根据需要定义的在局部生效的变量,访问之前,需要DECLARE声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的BEGIN … END块。
2、语法
声明
DECLARE 变量名 变量类型 [DEFAULT ...];
变量类型就是数据库字段类型:INT、BIGINT、CHAR、VARCAHR、DATE、TIME
等。
赋值
SET 变量名 = 值;
SET 变量名 := 值;
SELECT 字段名 INTO 变量名 FROM 表名 ...;
语法:
IF 条件1 THEN
...
ELSEIF 条件2 THEN -- 可选
...
ELSE -- 可选
...
END IF;
参数
类型 | 含义 | 备注 |
---|---|---|
IN | 该类参数作为输入,也就是需要调用时传入值 | 默认 |
OUT | 该类参数作为输出,也就是该参数可以作为返回值 | |
INOUT | 既可以作为输入参数,也可以作为输出参数 |
语法:
CREATE PROCEDURE 存储过程名称([IN/OUT/INOUT 参数名 参数类型])
BEGIN
-- SQL语句
END;
根据传入参数score,判断当前分数对应的分数等级,并返回。
score >= 85分,等级为优秀;
score >= 60分,且score < 85分,等级为及格;
score < 60分,等级为不及格。
-- 创建存储过程 create procedure grade_core_2(in score int, out grade varchar(10)) begin if score >= 85 then set grade := '优秀'; elseif score >= 60 then set grade := '及格'; else set grade := '不及格'; end if; select grade; end; -- 调用 call grade_core_2(18, @result); select @result;
语法
# 先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑
WHILE 条件 DO
SQL逻辑...
END WHILE;
SET @n=0;
SELECT s_id,s_score,@n:=@n+1 rank FROM `score` ORDER BY s_score DESC;
CREATE PROCEDURE proct ( IN num INT ) BEGIN DECLARE i INT; SET i = 10; WHILE i < num DO SET i = i + 1; IF i % 2 = 1 THEN INSERT INTO teacher (t_id, t_name) VALUES (i, CONCAT( 'xcz', i)); END IF; END WHILE; END; call proct(210);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。