SqlServer 存储过程
简单的入门存储过程语句 一,创建存储过程
例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',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
? --更新中 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |