1、增删改—通用存储过程

--增删改 存储过程
create proc Infos_InsertUpdateDelete
(
@Id int,
@Name varchar(50),
@DataTable_Action_ varchar(10) = '' --操作方法:Insert:增加 Update:修改 Delete:删除
)
AS
declare @ReturnValue varchar(18) -- 返回操作结果
set @ReturnValue = -1
--开启事务
begin tran
--错误捕捉机制
begin try
--新增
if(@DataTable_Action_='Insert')
begin
insert into Infos(Name) values(@Name)
select
@ReturnValue = SCOPE_IDENTITY()
end

--删除
if(@DataTable_Action_='Delete')
begin
delete Infos where Id=@Id
set @ReturnValue = @@REMSERVER
end
commit tran

end try
begin catch
rollback tran
end catch
select
@ReturnValue

exec Infos_InsertUpdateDelete @Id,@AId,@DId,@Ceng,@HomeNum,@FSize,@JSize,@HId,@JieGou,@Address,@Path,@XingZhi,@States,@DataTable_Action_

2、查询分页—通用存储过程

Create PROC [dbo].[ProcPageList] (
@pageSize INT = 20, --每页记录数
@pageNo INT =1, --当前页
@tableName VARCHAR(50), --表名
@whereString VARCHAR(800) = ' 1=1 ',--WHERE条件
@orderString VARCHAR(200), --排序条件(倒序需要带desc)
@recordTotal INT OUTPUT --输出记录总数
)
AS
BEGIN
DECLARE @tempSql NVARCHAR(4000)
--输出参数@recordTotal为总记录数
SET @tempSql = N'select @recordTotal = count(*) from ' + @tableName + ' where '+ @whereString
EXEC sp_executesql @tempSql,N'@recordTotal INT OUTPUT',@recordTotal OUTPUT
--主查询返回结果集
SET @tempSql = N'select * from (select *,Row_number() over(order by '+@orderString+') as rows from '+@tableName+' WHERE '+@whereString+') as main_temp where rows BETWEEN '+ convert(varchar(100),(@pageNo - 1) * @pageSize+ 1) + ' and ' + convert(varchar(100),@pageNo * @pageSize)
EXEC(@tempSql)
END

3、比较完整的查询分页存储过程

create PROCEDURE [dbo].[commonPagination]
@columns varchar(500), --要显示的列名,用逗号隔开 
@tableName varchar(100), --要查询的表名 
@orderColumnName varchar(100), --排序的列名 
@order varchar(50), --排序的方式,升序为asc,降序为 desc 
@where varchar(100), --where 条件,如果不带查询条件,请用 1=1 
@pageIndex int, --当前页索引 
@pageSize int, --页大小(每页显示的记录条数) 
@pageCount int out --总页数,输出参数 
as 
begin 
declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句 
declare @sqlSelect nvarchar(1000) --查询语句 
set @sqlRecordCount=N'select @recordCount=count(*) from ' +@tableName + ' where '+ @where

declare @recordCount int --保存总记录条数的变量 
exec sp_executesql @sqlRecordCount,N'@recordCount int output',@recordCount output

--动态 sql 传参 
if( @recordCount % @pageSize = 0) --如果总记录条数可以被页大小整除 
set @pageCount = @recordCount / @pageSize --总页数就等于总记录条数除以页大小 
else --如果总记录条数不能被页大小整除 
set @pageCount = @recordCount / @pageSize + 1 --总页数就等于总记录条数除以页大小加1

set @sqlSelect = 
N'select '+@columns+' from ( 
select row_number() over (order by ' 
+@orderColumnName+' '+@order 
+') as tempid,* from ' 
+@tableName+' where '+ @where 
+') as tempTableName where tempid between ' 
+str((@pageIndex - 1)*@pageSize + 1 ) 
+' and '+str( @pageIndex * @pageSize) 
exec (@sqlSelect) --执行动态Sql 
end

SqlServer通用存储过程的更多相关文章

  1. MS SQLSERVER通用存储过程分页

    最近在面试的时候,遇到个奇葩的秃顶老头面试官. 问:写过存储过程分页吗? 答:没写过,但是我知道分页存储的原理,我自己也写过,只是在工作中没写过. 问:那你这么多年工作中就没写过吗? 答:的确没写过, ...

  2. ERP通用存储过程封装(三)

    一:解释      SQL Server提供了一种方法:可以将一些预先编译的SQL语句集中起来由SQL Server数据库服务器来完成以实现某个任务,这就是存储过程.存储过程常驻在SQL Server ...

  3. Sqlserver中存储过程,触发器,自定义函数(二)

    Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...

  4. Sqlserver中存储过程,触发器,自定义函数(一)

    Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. ...

  5. Sqlserver中存储过程,触发器,自定义函数

    Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...

  6. JSON序列化及利用SqlServer系统存储过程sp_send_dbmail发送邮件(一)

    JSON序列化 http://www.cnblogs.com/yubaolee/p/json_serialize.html 利用SqlServer系统存储过程sp_send_dbmail发送邮件(一) ...

  7. 改良版的SQL Service 通用存储过程分页

    上次写了通用存储过程.感觉还是有很大的BUG.就是条件不能参数画化.这个BUG可以说是致命的.但是我一直想在用什么方法能解决这个东西.其实我只是想写少量的代码来做更多的事情.我想能不能传集合给存储过程 ...

  8. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  9. SqlServer复杂存储过程

    SqlServer复杂存储过程 CREATE PROCEDURE FETCH_GOOUT_INFO AS BEGIN WITH l as(SELECT A.ZJHM, O.KSQR, O.JSRQ, ...

随机推荐

  1. 增加Myecllipse内存

    1.打开MyEclipse后,进入Windows/Preferences/Java/Installed JREs 点击后,在右边窗口选择JREs,双击后进入 2.在Default VM Argumen ...

  2. Core2.0知识整理

    概述 Commond-Line ASP.NET结构文件 Startup 配置文件 中间件和依赖注入 依赖注入原理 框架自带的依赖注入(IServiceCollection) 依赖注入生命周期 依赖注入 ...

  3. TensorflowSharp安装和使用入门

    Tensorflow是一个人工智能框架.TensorflowSharp是对Tensorflow C语言版接口的封装,便于C#开发人员在项目中使用Tensorflow. 一.使用方法 Tensorflo ...

  4. web开发的跨域问题详解

    本文由云+社区发表 做过 web 开发的同学,应该都遇到过跨域的问题,当我们从一个域名向另一个域名发送 Ajax 请求的时候,打开浏览器控制台就会看到跨域错误,今天我们就来聊聊跨域的问题. 1. 浏览 ...

  5. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘

    Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...

  6. 流式大数据计算实践(2)----Hadoop集群和Zookeeper

    一.前言 1.上一文搭建好了Hadoop单机模式,这一文继续搭建Hadoop集群 二.搭建Hadoop集群 1.根据上文的流程得到两台单机模式的机器,并保证两台单机模式正常启动,记得第二台机器core ...

  7. man statd(rpc.statd中文手册)

    本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.statd程序主要实现NFS锁相关内容,如普通的文件锁(NLM.NSM).文件 ...

  8. Guid的生成和数据修整(去除空格和小写字符)

    SqlServer实现 SELECT LOWER(LTRIM(RTRIM(REPLACE(NEWID(),'-','')))) NEWID()函数产生随机数,例如:F874153F-D99B-40A9 ...

  9. [android] 绑定方式开启服务&调用服务的方法

    需求:后台开启一个唱歌服务,这个服务里面有个方法切换歌曲 新建一个SingService继承系统Service 重写onCreate()和onDestory()方法 填一个自定义的方法changeSi ...

  10. Spring Boot Docker 实战

    Spring Boot Docker 开发环境 开发工具: Intellij IDEA 2018.2.6 springboot: 2.0.6.RELEASE jdk: 1.8.0_192 maven: ...