SQL SERVER 中的存储过程如何运用的???

存储过程概述

为了实现特定任务,而将一些需要多次调用的固定操作语句编写成程序段,这些程序段储存在服务器上,由数据库服务器通过子程序来调用
存储过程的优缺点

优点缺点
存储过程加快系统运行速度,存储过程只在创建时编译,以后每次执行都不需要重新编译。数据库移植不方便,存储过程依赖于数据库管理系统,SQL Server 2012 储存过程中封装的操作代码不能直接移植到其他的数据库管理系统中。
存储过程可以封装复杂的数据库操作,简化操作流程,例如对多个表的更新、删除等。不支持面向对象的设计,无法采用面向对象的方式将逻辑业务进行封装,甚至形成通用的可支持服务的业务逻辑框架。
可以实现模块化的程序设计,存储过程可以多次调用,提供统一的数据库访问接口,改进应用程序的可维护性。代码可读性查、不易维护。
存储过程可以降低网络流量,储存过程代码直接存储于数据库中,在客户端与服务器的通信过程中,不会产生大量的T-SQL代码流量。不支持集群。

如何创建存储过程
1.不带参数的存储过程的创建和调用

创建存储过程
create proc 存储过程名
--修改
  alter proc 存储过程名字
 --删除
  drop proc 存储过程名字

举例

--创建存储查询数据
 create proc cp_select_book_byNames
 as
  select * from Books
  go
  --调用
  exec cp_select_book_byNames
  go

2.带输入参数的存储过程的创建和调用

  create proc cp_select_book_byName
  (
  @name varchar(50)
  )
  as
  select * from books where name like '%'+name+'%'
  --调用
  exec cp_select_book_byName '水浒123'
  go

3.带输出参数的存储过程的创建和调用

  --根据名称查询,返回记录,用手返回记录数
  create proc cp_select_books_ByNameExt
  (
  @name varchar(50),
  @recordRows int out--输出类型
 
  )
  as 
  select * from books where name like '%'+@name+'%'
  select @recordRows=count(*) from books
  go
  --调用
  --定一个变量,接收返回参数@recordRowsd的值
  declare @rs int
  exec cp_select_books_ByNameExt '水浒传',@rs out
  print '查询的记录数是:'+convert(varchar(5),@rs)

4.分页

create proc cp_select_booke_paging
(
 @name nvarchar(50),--按照名称来查询
 @pageIndex int,--第几页
 @pageSize int,--每页显示数量
 @totalCount int --所有页面的总记录数
)
as
 select top (@pageSize) * from [dbo].[Books]
 where name like '%'+@name+'%' and  id not in (select top ((@pageIndex-1)*@pageSize) ID 
 from [dbo].[Books] order by ID)
 order by ID
 --查询总记录数
 select @totalCount=COUNT(*) from [dbo].[Books] where name like '%'+@name+'%'
调用
select * from [dbo].[Books]
declare @totalCount int 
--查询第一页并且每页显示两条内容
exec cp_select_booke_paging '',1,2,@totalCount
print @totalCount
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[2\]:创建语法: create proc | procedure 存储名( \[{@参数 数据类型} \[=默认值\] \[out|output\], {@参数 数据类型} \[=默认值\] \[out|output\], ....\] ) as begin SQL_statements end go 引用\[3\]:常用系统存储过程有: 存储过程含义exec sp_databases;查看所有数据库exec sp_helpdb;查询数据库信息exec sp_helpdb 数据名;查询指定数据库信息exec sp_renamedb ‘旧库名’, ‘新库名’;更改数据库名称exec sp_tables;查询当前数据库的所有表exec sp_columns 表名;查看列exec sp_help 表名;返回表的所有信息exec sp_helpIndex 表名;查看索引exec sp_helpConstraint 表名;约束exec sp_stored_procedures;当前环境的所有存储exec sp_helptext ‘存储过程’;查看存储过程源码exec sp_rename ‘旧名’, ‘新名’;修改表、索引、列的名称exec sp_defaultdb ‘旧库名’, ‘新库名’;更改登录名的默认数据库。 问题:sql server存储过程怎么关闭? 回答: 在SQL Server存储过程是通过使用CREATE PROCEDURE语句来创建的。要关闭存储过程,可以使用DROP PROCEDURE语句来删除它。例如,要关闭名为GetUserState的存储过程,可以使用以下语句: DROP PROCEDURE GetUserState; \[2\]这将从数据库删除该存储过程。请注意,删除存储过程将永久删除它,因此在执行此操作之前,请确保您不再需要存储过程。 #### 引用[.reference_title] - *1* [MyBatis调用SqlServer存储过程](https://blog.csdn.net/qq_36565692/article/details/126359880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [SqlServer存储过程详解](https://blog.csdn.net/weixin_55909413/article/details/114767079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值