加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer 存储过程

发布时间:2020-12-12 12:52:49 所属栏目:MsSql教程 来源:网络整理
导读:简单的入门存储过程语句 一,创建存储过程 例1 .-- 创建一个简单的不带参数的存储过程 Test CREATE PROCEDURE Test AS BEGIN ?? SELECT * FROM Students END -- 执行存储过程 Test EXEC ? Test 例2 .-- 创建一个要求输入一个参数的存储过程 Test CREATE PROCE

简单的入门存储过程语句

一,创建存储过程

例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


?



--更新中

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读