点击关注上方“SQL数据库开发”,
设为“置顶或星标”,第一时间送达干货
示例:
CREATE PROCEDURE sp_customers(IN cusid INT)
BEGIN
SELECT * FROM customers WHERE `客户ID`=cusid;
END;
CALL sp_name([参数])
CALL sp_customers(1);
解释:
过程体即我们在调用时必须执行的SQL语句,上面的SELECT查询即为一个简单的过程体。
过程体包含DML、DDL语句,if-then-else和while-do语句、声明变量的declare语句等
过程体的格式上面也已经演示过,以BEGIN开始,以END结尾(可以嵌套)。
BEGIN
BEGIN
BEGIN
-- SQL代码;
END
END
END
[label_name:] BEGIN [statement_list] END [label_name]
label1: BEGIN
label2: BEGIN
label3: BEGIN
--SQL代码;
END label3 ;
END label2;
END label1
IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
CREATE PROCEDURE sp_customers_out(OUT cusname VARCHAR(20))
BEGIN
SELECT cusname;
SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=1;
SELECT cusname;
END
CALL sp_customers_out(@cusname);
CREATE PROCEDURE sp_customers_inout(INOUT cusname VARCHAR(20))
BEGIN
SELECT cusname;
SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=2;
SELECT cusname;
END
SET @cusname='张三';
CALL sp_customers_inout(@cusname);
需要输入值时使用IN参数;
需要返回值时使用OUT参数;
INOUT参数尽量少用。
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。 有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行 数据前线 后台回复关键字:1024,获取一份精心整理的技术干货 后台回复关键字:进群,带你进入高手如云的交流群。 推荐阅读