存储过程概念及使用实例讲解

时间:2018-09-21
本文章向大家介绍存储过程概念及使用实例讲解,需要的朋友可以参考一下

存储过程的概念

存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。

存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。

由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。

1、 创建语法

create proc | procedure pro_name
[{@参数数据类型} [=默认值] [output],
{@参数数据类型} [=默认值] [output],
....

]
as
SQL_statements

2、分页存储过程

if (object_id('pro_stu', 'P') is not null)
drop proc pro_stu
go
create procedure pro_stu(
@pageIndex int,
@pageSize int
)
as
declare @startRow int, @endRow int
set @startRow = (@pageIndex - 1) * @pageSize +1
set @endRow = @startRow + @pageSize -1
select * from (
select *, row_number() over (order by id asc) as number from student
) t
where t.number between @startRow and @endRow;

exec pro_stu 2, 2;

3、另一种分页机制

create proc hehe(
@page int,
@size int)
as
select top (@size) id,Bran_parentNumber,Bran_number,Bran_name from base_branch
where id not in(select top(@page*@size) id from Base_Branch order by id ASC)
order by id ASC

exec hehe 3,6

4、动态字段查询

create procedure queryStuNameById
(
@Type varchar(10),--输入参数
@TrueName varchar(10) output --输出参数
)
as
DECLARE @strSQL NVARCHAR(1000)
SET @strSQL=
' SELECT '
+@TrueName
+' FROM sys_user'
+' WHERE Type='+@Type
exec(@strSQL)
    • 以上即为基础的存储过程使用