上次写了通用存储过程.感觉还是有很大的BUG.就是条件不能参数画化.这个BUG可以说是致命的.但是我一直想在用什么方法能解决这个东西.其实我只是想写少量的代码来做更多的事情.我想能不能传集合给存储过程但是好像这个是行不通没办法只能写死. 上代码吧 IF (SELECT COUNT(*) FROM sysobjects s WHERE s.[type]='P' AND s.name='SP_PAGE_PRACTICAL')>0 DROP PROC SP_PAGE_PRACTICAL; GO CRE…
最近在面试的时候,遇到个奇葩的秃顶老头面试官. 问:写过存储过程分页吗? 答:没写过,但是我知道分页存储的原理,我自己也写过,只是在工作中没写过. 问:那你这么多年工作中就没写过吗? 答:的确没写过,因为项目数据量都特别小. 然后,这奇葩就起身就要走人了,连个招呼都没有.想我面试了这么多公司,这种奇葩面试官,还是头回见到,一点职业素质,礼貌都木有.气死我了! 明天要去入职新公司了,今天闲来无事,试着写了写这个存储过程分页.只在SQLSERVER2008上测试过,不过我想,2000以上版本应该都会…
创建存储过程如下: CREATE PROCEDURE [dbo].[sp_GetPageList] ), --表名 ) = '*', --字段名(全部字段为*) ), --排序字段(必须!支持多字段) ) = Null,--条件语句(不用加where) @pageSize int, --每页多少条记录 , --指定当前为第几页 OUTPUT, @TotalPage int output --返回总页数 AS BEGIN Begin Tran --开始事务 ); print @totalRecor…
一起是用oracle数据库..感觉oracle数据库强大.查询速度是杠杠的.换了家公司用的是SQL SERVICE.以前用了1年现在捡回以前的记忆.动手写了动态SQL过存储过程分页.感觉和oracle语法不太一样外.其他感觉没啥区别.. 这个是通用存储过程.但是有一个问题我没解决就是条件怎么通用写.我条件都是拼接字符串感觉很不安全.不晓得博友门有木有什么解决方案 不多说了直接上代码. GO IF (SELECT COUNT(*) FROM sysobjects s WHERE s.[type]=…
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Script Date: 2016/3/8 13:44:58 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[Common_PageList] ( ),---表名 @strFld nvarchar…
原文:如此高效通用的分页存储过程是带有sql注入漏洞的 在google中搜索“分页存储过程”会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如果你觉得我错了,请读下去也许你会改变看法. 通常大家都会认为存储过程可以避免sql注入的漏洞,这适用于一般的存储过程,而对于通用分页存储过程是不适合的,请看下面的代码和分析! 一般的通用的分页存储过程代码如下: 通用分页存储过程CREATE PROCEDURE pagination@tblName …
使用前提 查询表必须有ID字段,且该字段不能重复,建议为自增主键 背景 如果使用ADO.NET进行开发,在查询分页数据的时候一般都是使用分页存储过程来实现的,本文提供一种通用的分页存储过程,只需要传入: 表名(以DBName.dbo.TableName)的形式 Where条件(ID > 0 AND ID < 100) Select字段(ID,NAME,CreateDate) Order字段(NAME ASC,CreateDate DESC) PageSize (15) PageIndex(2)…
Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 @ColumnNames nvarchar(1000) = '*', --字段名集合(全部字段为*,其它逗号分隔) @OrderClause nvarchar(1000), --排序从句(不包含order by) @WhereClause nvarchar(1000) =N' 1=1 ',   …
以前用到数据库存储过程分页的时候都是用 not in 但是最近工作的时候,随着数据库记录的不断增大,发现not in的效率 真的不行 虽然都设置了索引,但是当记录达到10w的时候就发现不行了,都是需要好几秒钟,受不了了 所以就想换个方法,直接找到需要的页面的数据库记录的第一个ID,当然这个id是有索引,唯一的 而且是主键,这个也是网上说到的最快的一个方法 ^_^,据说比游标更快(我没用过游标) CREATE PROCEDURE sp_Image_List_ByCategoryID3 (  @ro…
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进…