目录
--注意:定义存储过程是,参数列表里可以有多个输出类型(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 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