CREATE PROC [dbo].[proc_select_id] @pageindex int=1,@pagesize int=10,@tablename VARCHAR(50)="",@fields VARCHAR(1000)="",@keyid VARCHAR(50)="",@condition NVARCHAR(1000)="",@orderstr VARCHAR(500),@totalRecord BIGINT OUTPUTAS IF ISNULL(@orderstr,N"")=N"" SET @orderstr=N" ORDER BY "+@keyid+N" DESC " IF ISNULL(@fields,N"")=N"" SET @fields=N"*" IF ISNULL(@condition,N"")=N"" SET @condition=N"1=1" DECLARE @sql NVARCHAR(4000) SET @sql=N"SELECT @totalRecord=COUNT(*)" +N" FROM "+@tablename +N" WHERE "+@condition EXEC sp_executesql @sql,N"@totalRecord INT OUTPUT",@totalRecord OUTPUT IF(@pageindex=1) BEGIN SET @sql=N"SELECT TOP "+STR(@pagesize)+N" "+@fields+N" FROM "+@tablename+N" WHERE "+@condition+N" "+@orderstr EXEC(@sql) END ELSE BEGIN DECLARE @operatestr CHAR(3),@comparestr CHAR(1) SET @operatestr="MAX" SET @comparestr=">" IF(@orderstr<>"") BEGIN IF(CHARINDEX("desc",LOWER(@orderstr))<>0) BEGIN SET @operatestr="MIN" SET @comparestr="<" END END SET @sql=N"SELECT top "+STR(@pagesize)+N" "+@fields+N" FROM "+@tablename+N" WHERE "+@keyid+@comparestr +N"(SELECT "+@operatestr+N"("+@keyid+N") FROM "+@tablename+N" WHERE "+@keyid +N" IN (SELECT TOP "+STR((@pageindex-1)*@pagesize)+N" "+@keyid+N" FROM "+@tablename+N" WHERE " +@condition+N" "+@orderstr+N")) AND "+@condition+N" "+@orderstr EXEC(@sql) ENDGO CREATE PROC [dbo].[proc_select_page_row] @pageindex INT=1,@pagesize INT=10,@tablename VARCHAR(50)="",@fields VARCHAR(1000)="*",@keyid VARCHAR(50)="",@condition NVARCHAR(1000)="",@orderstr VARCHAR(500),@totalRecord BIGINT OUTPUTAS IF ISNULL(@orderstr,N"")=N"" SET @orderstr=N" ORDER BY "+@keyid+N" DESC " IF ISNULL(@fields,N"")=N"" SET @fields=N"*" IF ISNULL(@condition,N"")=N"" SET @condition=N"1=1" DECLARE @sql NVARCHAR(4000) SET @sql=N"SELECT @totalRecord=COUNT(*)" +N" FROM "+@tablename +N" WHERE "+@condition EXEC sp_executesql @sql,N"@totalRecord bigint OUTPUT",@totalRecord OUTPUT IF(@pageindex=1) BEGIN SET @sql=N"SELECT TOP "+STR(@pagesize)+N" "+@fields+N" FROM "+@tablename+N" WHERE "+@condition+N" "+@orderstr EXEC(@sql) END ELSE BEGIN DECLARE @StartRecord INT SET @StartRecord = (@pageindex-1)*@pagesize + 1 SET @sql=N"SELECT * FROM (SELECT ROW_NUMBER() OVER ("+ @orderstr +N") AS rowId,"+@fields+N" FROM "+ @tablename+N") AS T WHERE rowId>="+STR(@StartRecord)+N" and rowId<="+STR(@StartRecord + @pagesize - 1) EXEC(@sql) ENDGO CREATE PROC [dbo].[proc_select_page_top] @pageindex INT=1,@pagesize INT=10,@tablename VARCHAR(50)="",@fields VARCHAR(1000)="",@keyid VARCHAR(50)="",@condition NVARCHAR(1000)="",@orderstr VARCHAR(500),@totalRecord BIGINT OUTPUTAS IF ISNULL(@orderstr,N"")=N"" SET @orderstr=N" ORDER BY "+@keyid+N" DESC " IF ISNULL(@fields,N"")=N"" SET @fields=N"*" IF ISNULL(@condition,N"")=N"" SET @condition=N"1=1" DECLARE @sql NVARCHAR(4000) SET @sql=N"SELECT @totalRecord=COUNT(*)" +N" FROM "+@tablename +N" WHERE "+@condition EXEC sp_executesql @sql,N"@totalRecord INT OUTPUT",@totalRecord OUTPUT IF(@pageindex=1) BEGIN SET @sql=N"SELECT TOP "+STR(@pagesize)+N" "+@fields+N" FROM "+@tablename+N" WHERE "+@condition+N" "+@orderstr EXEC(@sql) END ELSE BEGIN SET @sql=N"SELECT TOP "+STR(@pagesize)+N" "+@fields+N" FROM "+@tablename+N" WHERE "+@keyid +N" NOT IN(SELECT TOP "+STR((@pageindex-1)*@pagesize)+N" "+@keyid+N" FROM " +@tablename+N" WHERE "+@condition+N" "+@orderstr+N") AND "+@condition+N" "+@orderstr EXEC(@sql) ENDGO在CentOS 6.0上安装Oracle 11g R2 (11.2.0.1)以及基本的配置Oracle 如何搜索当前用户下所有表里含某个值的字段?相关资讯 SQL
- SQL 新手指南 (09/10/2015 10:57:53)
- SQL导入txt以及SQL中的时间格式操 (01/25/2015 11:35:04)
- SQL 事务及实例演示 (08/12/2014 10:36:37)
| - SQL 中的正则函数 (06/28/2015 15:59:48)
- SQL 集合(笔记) (01/15/2015 20:19:06)
- Oracle shell调用SQL操作DB (02/03/2014 10:48:18)
|
本文评论 查看全部评论 (0)