简单的入门存储过程语句
一,创建存储过程
例1.--创建一个简单的不带参数的存储过程 Test
CREATE PROCEDURETest
AS
BEGIN
SELECT * FROM Students
END
--执行存储过程 Test
EXEC Test
例2.--创建一个要求输入一个参数的存储过程 Test
CREATE PROCEDURETest
@id INT
AS
BEGIN
SELECT * FROM StudentsWHEREID=@id
END
--执行存储过程 Test
EXEC Test 1
例3.--创建一个要求输入两个输入参数的存储过程 Test
CREATE PROCEDURE Test
@id INT,
@name VARCHAR(20)
AS
BEGIN
SELECT * FROM StudentsWHEREID=@idANDName=@name
END
--执行存储过程
EXEC Test 1,'张三'
例4.--创建一个带返回值的存储过程 Test
CREATE PROCEDURETest
@id INT,
@name VARCHAR(20),
@age INT OUTPUT
AS
BEGIN
SELECT @age=Age FROM Students WHEREID=@idANDName=@name
END
--执行存储过程
DECLARE @nianling INT --定义一个变量来接收存储过程的返回值
EXEC Test 1,'张三',@nianlingOUTPUT
SELECT @nianling --查询出返回值
例5.--带有RETURN的存储过程
CREATE PROCEDURETest
@id INT,
@name VARCHAR(20)
AS
BEGIN
DECLARE @returnname VARCHAR(20)
SELECT @returnname=AgeFROMStudentsWHERE ID=@idANDName=@name
RETURN @returnname
END
--执行存储过程
DECLARE @return INT
EXEC @return=Test1,'张三'
SELECT @return
例6.--创建存储过程项数据表中插入数据
CREATE PROCEDURETest
@id INT,
@name VARCHAR(20),
@age INT,
@sex varchar(4),
@classId INT,
@address VARCHAR(40)
AS
BEGIN
INSERT Students(ID,Name,Age,Sex,ClassID,Address)
values(@id,@name,@age,@sex,@classId,@address)
END
--执行存储过程
EXEC Test8,'张小小',18,'女',2,'北京'
--查询表中是否插入数据
SELECT *FROMStudentsWHERE ID=8
例7.--通过存储过程删除数据表中的数据
CREATE PROCEDURETest
@id INT
AS
BEGIN
DELETE Students WHERE ID=@id
END
--执行存储过程
EXEC Test8
--查询表中的数据是否删除成功
SELECT *FROMStudents
例8.--一个相对复杂的存储过程首先判断表中有没有,如果有更新表中的数据,没有的向表中插入一行数据
CREATE PROCEDURETest
(@shoppingCartIdnvarchar(50),
@quantity int=1,--默认为1
@productId int)
AS
IF EXISTS(SELECT* FROM Sales.ShoppingCartItemWHERE ShoppingCartID=@shoppingCartIdAND ProductID=@productId)
BEGIN
UPDATE Sales.ShoppingCartItemSET Quantity=@quantityWHERE ShoppingCartID=@shoppingCartIdAND ProductID=@productId
PRINT 'UPDATE SUCCEND'--更新成功显示UPDATE SUCCEND
END
ELSE
BEGIN
INSERT Sales.ShoppingCartItem(ShoppingCartID,ProductID,Quantity)VALUES(@shoppingCartId,@productId,@quantity)
PRINT 'INSERT SUCCEND'--插入成功显示INSERT SUCCEND
END
--执行存储过程
EXEC Test'125',2,316
二.修改存储过程
例1.--修改已经创建的存储过程
ALTER PROCEDURETest
@address VARCHAR(40)
AS
BEGIN
SELECT * FROM StudentsWHEREAddress=@address
END
--执行修改后的存储过程
EXEC Test'北京'
例2.--一个相对复杂的修改存储过程
ALTER PROCEDURETest
@groupname NVARCHAR(50)
AS
BEGIN
SELECT Name FROM HumanResources.DepartmentWHERE GroupName=@groupnameORDER BY Name
SELECT @@ROWCOUNT '影响的行数'--调用系统全局变量
END
--执行存储过程将返回两个结果集
EXEC Test'Research and Development'
三.删除存储过程
例1.--删除名子为Test的存储过程
DROP PROCEDURETest
--更新中