学习笔记之sql server存储过程

目录

  • 什么是存储过程
    • 数据库的表
      • 以下从四个点来讲触发器的参数和简单的分页
        • 什么时候该使用存储过程?

什么是存储过程

什么是存储过程?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。缺点是存储过程的维护性较差。

数据库的表

Booktypes表

字段 含义 数据类型.
ID id主键自增 int.
Name 书籍名字 varchar(50).
Nums 书籍的数量 int

books表

字段 含义 数据类型.
ID id主键自增 int.
Name 书籍名字 varchar(50).
Remark 备注 varchar(50)
TypeID 分类id,booktypei d的外键 int
TypeName 分类名 varchar(50)

以下从四个点来讲触发器的参数和简单的分页

以下从四个点来讲触发器的参数和简单的分页

1.不带参数的存储

--创建存储更具名称查询数据
create proc cp_select_book_byName
as
 select * from books

 --调用
 exec cp_select_book_byName

2.带输入参数的存储过程

go
create proc cp_select_book_byNamecs
(
 @name varchar(50)
)
as
 select * from books where name like '%'+@name+'%'

 exec cp_select_book_byNamecs '大'

3.带输出参数的存储过程

--根据名称查询 返回记录 同时返回记录数
go
create proc cp_select_book_ByNameExt
(
@name varchar(50),
@recordRows int out  --out表示输出类型
)
as
  select*from books where name like '%'+@name+'%'
  select @recordRows=count(*) from books

--调用
  --定义一个变量,接收返回参数@recordRows的值
  declare @rs int
  exec cp_select_book_ByNameExt'mvc',@rs out
  print '查询的记录数是:'+convert(varchar(50),@rs)

4.简单的分页的存储过程的创建和调用


go
 create proc op_page
 (
 @name varchar(50),
 @pageindex int,--页码
 @pageSize int,--每一页的条数
 @rs int out --总记录数
 )
 as


 select top (@pageSize) * from books
 where id not in(select top (@pageSize*(@pageindex-1)) ID from books where name like '%'+@name+'%' order by ID)
 and name like '%'+@name+'%' order by ID
 select @rs=count(*) from books where name like '%'+@name+'%'

 declare @rows int
 exec op_page '',1,5,@rows out
 print @rows

什么时候该使用存储过程?

当一个事务要完成很多操作的时候对多表完成复杂操作的时候可以用存储过程
存储过程其威力和优势主要体现在:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

这里是引用https://www.cnblogs.com/jack-liang/archive/2011/08/08/2130648.html

你可能感兴趣的:(学习笔记之sql server存储过程)