SQL 之 存储过程、参数和函数
来源:互联网 发布:淘宝客设置了30%佣金 编辑:程序博客网 时间:2024/05/04 06:02
存储过程和参数
区别于之前的用单独一条语句检索数据,现在把多条语句保存到一个叫存储过程的单独对象中。
使用存储过程的原因:
1. 把多条SQL语句保存到单独的过程中
2. 把参数和SQL语句结合使用(也可以不含参数)
一、创建存储过程
CREATE PROCEDURE ProcedureName,
AS
[OptionalParameterDeclarations]
BEGIN
SQLStatements
END
MySQL版本:
DELIMITER $$
CREATE PROCEDURE ProcedureName()
BEGIN
SQLStatements
END$$
DELIMITER ;
第一行的作用:把分隔符从逗号临时改为$$,所需的参数在圆括号中指定,最后必须有分号;。关键字END后的$$符号,表示CREATE PROCEDURE命令结束。最后一行把分隔符改回分号。
简单示例:
创建一个存储过程,可以用来执行下面:
SELECT *
FROM Customers
CREATE PROCEDURE ProcedureOne
AS
BEGIN
SELECT *
FROM Customers
END
没有参数,AS后面直接是BEGIN和END(里面是SQL语句)
注意SQL的BEGIN和END之间的SQLStatements不需要以分号结尾,而
MySQL:
DELIMITER $$
CREATE PROCEDURE ProcedureOne()
BEGIN
SELECT *
FROM Customers;
END$$
DELIMITER ;
MySQL的BEGIN和END之间的SQLStatements需要以分号结尾,所以要使用DELIMITER暂时把分隔符改为$$以免还没定义完整过程就结束了命令。
创建存储过程不会执行任何东西,只是可以在以后执行它。
二、存储过程的参数
比如接受CustomerID这一参数:
SELECT *
FROM Customers
增加WHERE子句,选取特定客户的数据:
SELECT *
FROM Customers
WHERE CustomerID = ParameterValue
CREATE PROCEDURE CustomerProcedure
(@CustID INT)
AS
BEGIN
SELECT *
FROM Customers
WHERE CustomerID = @CustID
END
SQL使用@来表示变量。
MySQL版本:
DELIMITER $$
CREATE PROCEDURE CustomerProcedure
(CustID, INT)
BEGIN
SELECT *
FROM Customers
WHERE CustomerID = CustID;
END$$
DELIMITER ;
三、执行存储过程
SQL Server:EXEC ProcedureOne
即返回ProcedureOne里面包含的SELECT语句的结果。注意ProcedureOne不带参数。
EXEC CustomerProcedure
@CustID = 2
MySQL版本:
CALL ProcedureOne;
CALL CustomerProcedure(2);
四、修改和删除存储过程
ALTER关键字,语法和CREATE PROCEDURE一样。
比如修改只想看某个客户的前5行记录:
ALTER PROCEDURE CustomerProcedure
(@CustID, INT)
BEGIN
SELECT
TOP 5 *
FROM Customers
WHERE CustomerID = @CustID
END
删除
DROP PROCEDURE CustomerProcedure
此外,SQL还提供关键字CREATE FUNCTION、ALTER FUNCTION、DROP FUNCTION等创建、修改、删除自己定义的函数。
五、存储过程VS函数:
(1)存储过程可以有任意数目的输出函数:甚至可以没有。但是一个函数必须只有一个单一的返回值。
(2)通过调用程序来执行存储过程。不能在SELECT语句中直接引用存储过程,但可以在语句中引用函数。
- SQL 之 存储过程、参数和函数
- PL/SQL程序之存储过程和存储函数
- PL/SQL程序之存储过程和存储函数
- PL/SQL程序设计之存储过程和存储函数(四)
- Oracle pl/sql学习 之 子程序 过程和函数 存储过程 存储函数
- PL-SQL 存储函数和存储过程
- PL/SQL 存储过程和存储函数
- SQL Server存储过程和参数示例
- SQL Server存储过程和参数示例
- SQL Server存储过程和参数示例
- mysql之存储过程和存储函数
- SQL函数和存储过程的区别
- SQL函数和存储过程的区别
- SQL 函数和存储过程(待续)
- PL/SQL的存储过程和函数
- ORACLE常用SQL、存储过程和函数
- Sql Server函数和存储过程
- PL/SQL的存储过程和函数
- cordova之HelloWorld
- Python.库
- 【深度学习:目标检测】RCNN学习笔记(0):rcnn简介
- HDU 1022 Train Problem I (模拟栈)
- Unity下关于C#的文件读写一(基于TXT的简单读写)
- SQL 之 存储过程、参数和函数
- VC 调用 MinGW 生成的dll
- StreamUtils
- HDU 1035 Robot Motion (模拟)
- HDU 1829 A Bug's Life 并查集
- java lock的底层实现原理
- Genymotion安卓模拟器和VirtualBox虚拟机安装、配置、测试(win7_64bit)
- 弱校联萌 Problem J. Just Convolution
- Android 蒲公英集成SDK