存储过程

目录

 

--存储过程procedure

--自定义存储过程

--练习:不带参数的存储过程

--存储过程没有任何返回值

 

--练习:带参数的存储过程:

 

--存储过程可以给参数设置默认值

 

--带输出类型参数的存储过程

 

--调用带输出类型的存储过程

--注意:定义存储过程是,参数列表里可以有多个输出类型(output)的参数,每个输出类型参数

--存储过程与函数的区别

 

--练习:使用 存储过程做分页


--存储过程procedure

--存储过程是存储在服务器上的一组TSQL语句的集合,用来完成一个特定功能

--存储过程分为:系统存储过程,自定义存储过程

exec sp_databases

exec sp_helptext sp_databases

 

 

--自定义存储过程

--语法:

--create procedure/proc 存储过程名字:up_

--[参数列表]   --注意:这里的参数列表不能使用圆括号

--as

--begin

---  存储过程代码

--end

 

--练习:不带参数的存储过程

create procedure up_HelloWord

as

begin

  select 'HelloWord!'

end


使用:


exec up_HelloWord 

--存储过程没有任何返回值

--存储过程不使用return语句带回返回值,如果有返回值,直接用select语句返回

 

--练习:带参数的存储过程:

create proc up_Add

@numA int,@numB int

as

begin

  select @numA+@numB

end

使用:

exec up_Add 1,2

 

--存储过程可以给参数设置默认值

--如果不是所有的参数都有默认值,那么最好把有默认值的参数写在参数列表的末尾

--可以显式指定参数的值

exec up_Add @numB=10,@numA=3

 

--带输出类型参数的存储过程

Alter proc up_Add

@numA int,

@numB int,

@sum int output

as

begin

  set @sum=@numA+@numB

end

 

--调用带输出类型的存储过程

declare  @s int

exec up_Add 100,150,@s output

select @s

 

--注意:定义存储过程是,参数列表里可以有多个输出类型(output)的参数,每个输出类型参数

--   的后面,都必须有output关键字

--   调用带输出参数的存储过程,也得加上output关键字

 

--存储过程与函数的区别

--1、函数可以用在表达式中,存储过程不可以,只能单独调用。

--2、函数不能修改基表的内容,存储过程可以。

--3、存储过程可以调用函数,但是函数不可以调用存储过程

--4、函数使用Table类型变量返回结果集。存储过程直接用select带回一个结果集

--5、函数一般用在复用度高,但功能单一的地方。

--存储过程一般用在功能复杂的要操作原始表中的数据的方面

create function Fun_Add(@numA int,@numB int)

returns int

as

begin

  return @numA+@numB

end



select dbo.Fun_Add(10,1) as 结果

exec up_Add 10,11



create proc up_SuperAdd

  @numA int,

  @numB int

as

begin

  select dbo.Fun_Add(@numA,@numB)

end

 

--练习:使用 存储过程做分页

select * from Tbstudent

--每行显示一条记录

create proc up_GetStudentByPageIndex

@pageIndex int,//页码

@pageSize int,//每页的信息条数

@MaxPage int output//最大页数

as

begin

  declare @count int

  select @count=count(1) from Tbstudent

  set @MaxPage=@count/@pageSize

  if(@count % @pageSize<>0)

  begin

     set @MaxPage=@MaxPage+1

  end

  select top(@pageSize) * from Tbstudent where stuId not in

  (select top((@pageIndex-1) * @pageSize) stuId from Tbstudent)

end



declare @max int

exec up_GetStudentByPageIndex 2,1,@max output

select @max

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值