Skip to content

存储过程就是为以后使用而保存的一条或多条SQL语句

为什么使用存储过程?
  • 把处理封装在一个易用单元中,可以简化复杂的操作
  • 由于不要求反复建立一系列处理步骤,保证了数据一致性
  • 简化对于变动的管理
  • 安全性:通过存储过程限制对基础数据的访问
  • 因为存储过程通常以编译过的形式存储,DBMS处理命令所需工作量少,提高了性能
  • 存在一些只能用在单个请求中的SQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码
执行存储过程EXECUTE
-- Active: 1739250781633@@127.0.0.1@3090@my_shop

# 执行存储过程
EXECUTE AddNewProduct('JTS01',
                      'Stuffed Eiffel Tower',
                      6.49,
                      'Plush stuffed toy with the text la Tour Eiffel in red white and blue'
);


# 创建存储过程(Oracle)
CREATE PROCEDURE MailingListCount (
  ListCount OUT INTEGER
)
IS
v_rows INTEGER;
BEGIN
  SELECT COUNT(*) INTO v_rows
  FROM Customers
  WHERE NOT cust_email IS NULL;
  ListCount := v_rows;
END;


# 创建存储过程(MySQL)
DELIMITER //
CREATE PROCEDURE MailingListCount(OUT ListCount INT)
BEGIN
  SELECT COUNT(*) INTO ListCount
  FROM Customers
  WHERE cust_email IS NOT NULL;
END //
DELIMITER ;


/* 存储过程的使用 */
-- 声明变量接收结果(变量名以@开头)
SET @email_count = 0;

-- 调用存储过程
CALL MailingListCount(@email_count);

-- 查看结果
SELECT @email_count AS '有效邮箱数量';