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


 



--更新中

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...