存储过程就是为以后使用而保存的一条或多条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 '有效邮箱数量';