`

我改写的sqlserver存储过程

Go 
阅读更多
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->/*declare @str as nvarchar(100)
declare @str2 as nvarchar(1200)
set @str2='2010-01-01'
set  @str='select * from sq_donglong.NwebCn_NEws25 where NewsNameSi like ''%业绩%'' and AddTime>'''+@str2+''''
exec sp_executesql @str
print @@rowcount
*/
CREATE PROCEDURE [sq_donglong].[Achivement_Back_NewbCn_News25]
@iPageCount int=2 OUTPUT,--总页数
@CountsIndex int =2 output,--总记录数
@iPageSize int=2 ,--每页条数
@iPageIndex int =2,--当前页
@StartDate DateTime ,--开始日期
@EndDate DateTime ,--结束日期
@SearchKeyword varchar(500),--产品名称
@SortID int--类别ID
 AS

--创建临时表 
       create table #t(    [ID] [int] IDENTITY (11),
    
[NewsNameSi] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    
[SortID] [int] NULL ,
    
[SortPath] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[GroupID] [nvarchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
    
[Exclusive] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    
[SourceSi] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    
[SmallPic] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    
[BigPic] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    
[ContentSi] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
    
[ClickNumber] [int] NULL ,
    
[AddTime] [smalldatetime] NULL ,
    
[UploadFiles] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
    
[NewFlag] [bit] NULL ,
    
[CommendFlag] [bit] NULL ,
    
[IsOk] [bit] NULL ,
    
[xuhao] [int] NULL ,
    
[Force] [bit] NULL ,
    
[AreaID] [int] NULL )
     
---变量allNums
 declare @allNums as decimal
 
--查询条件
 declare @datawhere as nvarchar(4000)
 
set @datawhere=''
 
select @allNums=count(ID) from sq_donglong.NwebCn_News25
--向临时表中写入数据
declare @strsql nvarchar(4000)
--创建查询语句
--
set  @strsql="select Pro_id,Pro_title,Pro_passed,Pro_addtime,Pro_rank,Pro_user,Pro_class1,Pro_small_pic,Pro_price from dbo.[Pro_Tbl_Product]  where Pro_id>0 and Pro_passed="+str(@passed)
--
set @strsql="select ID,NewsNameSi,SortID,SortPath,ClickNumber,AddTime,IsOk,xuhao,Force,AreaID from sq_donglong.[NwebCn_News25] where "

if(@SearchKeyword<>'')
set @datawhere=@datawhere+' and NewsNameSi like ''%'+@SearchKeyword+'%''  or ContentSi like ''%'+@SearchKeyword+'%'''
if(ISDATE(@StartDate)=1)
set @datawhere=@datawhere+' and AddTime>='''+@StartDate+''''
if(ISDATE(@EndDate)=1)
set @datawhere=@datawhere+' and AddTime<='''+@EndDate+''''
if(IsNumeric(@SortID)=1)
set @strsql=@datawhere+' and SortID='+str(@SortID)+''
set @strsql='select * from (select top '+@allNums+'ID,NewsNameSi,SortID,SortPath,ClickNumber,AddTime,IsOk,xuhao,Force,AreaID from sq_donglong.NwebCn_News25 where Force=1 '+@datawhere+' order by xuhao asc)a union all select * from (select top '+@allNums+' ID,NewsNameSi,SortID,SortPath,ClickNumber,AddTime,IsOk,xuhao,Force,AreaID from sq_donglong.NwebCn_News25 where Force<>1 '+@datawhere+' order by AddTime desc)b '
declare @strsql2 nvarchar(4000)
set @strsql2=@strsql
--插入
  set @strsql='insert into #t(ID,NewsNameSi,SortID,SortPath,ClickNumber,AddTime,IsOk,xuhao,Force,AreaID) '+@strsql
   
execute sp_executesql    @strsql
    
execute sp_executesql    @strsql2
--确定总记录数
    declare @Counts int
    
set @Counts = @@rowcount
--确定总页数
   IF @Counts%@iPageSize=0
          
SET @iPageCount=CEILING(@Counts/@iPageSize)
       
ELSE
          
SET @iPageCount=CEILING(@Counts/@iPageSize)+1
  
--若请求的页号大于总页数,则显示最后一页
      IF @iPageIndex > @iPageCount
        
SELECT @iPageIndex = @iPageCount
--确定当前页的始末记录
      DECLARE @iStart int    --start record
      DECLARE @iEnd int      --end record
     SELECT @iStart = (@iPageIndex - 1* @iPageSize
     
SELECT @iEnd = @iStart + @iPageSize + 1
--取当前页记录    
    select * from #t where ID>@iStart and ID<@iEnd
    
set @CountsIndex =@@rowcount
DROP TABLE #t
return @Counts
GO
分享到:
评论

相关推荐

    Oracle中实现MySql中limit+SqlServer分页+分页的存储过程

    先说下 intersect和 minus intersect运算 返回查询结果中相同的部分。 eg:各个部门中有哪些相同的工种 select job from account intersect select job from research .......................

    SQL Server复制功能要避开缺陷的干扰小结

    SQL Server 通过把数据传给三个存储过程(插入,删除,修改)进行数据的修改,我们可以根据自己的应用改写此存储过程。 存在缺陷:如果从A到B的复制条件和从B到A复制条件相同的话,会产生“踢皮球”的循环现象。既一...

    Hive用户指南(Hive_user_guide)_中文版.pdf

    因此, Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。 而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO ... VALUES 添加数据,使用 UPDATE ... SET 修改数据。 ...

    数据库系统概念(第五版)

    本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊...提供四个领先的数据库系统PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server的实例研究。

    HISP

    设置一个SQL Server(例如MariaDB)。 使用PHP8.0,intl和mysqli模块(例如Apache)设置网络服务器。 将文件从该存储库的WebInterface /主站点复制到您的Web服务器。 具有用于WebInterface /游戏站点的单独虚拟主机...

    分布式MySQL工具集Vitess.zip

    Youtube出品的开源分布式MySQL工具集Vitess,自动分片存储MySQL数据表,将单个SQL查询改写为分布式发送到多个MySQL Server上,支持行缓存(比MySQL本身缓存效率高),支持复制容错,已用于Youtube生产环境,文档有待...

    MYSQL培训经典教程(共两部分) 2/2

    数据库的基本操作 46 3.1 MYSQL的启动与终止 47 3.1.1 直接运行守护程序 47 3.1.2 使用脚本mysql.server启动关闭数据库 48 3.1.3 使用mysqladmin实用程序关闭、重启数据库 49 3.1.4 启动或停止NT平台...

    MYSQL培训经典教程(共两部分) 1/2

    数据库的基本操作 46 3.1 MYSQL的启动与终止 47 3.1.1 直接运行守护程序 47 3.1.2 使用脚本mysql.server启动关闭数据库 48 3.1.3 使用mysqladmin实用程序关闭、重启数据库 49 3.1.4 启动或停止NT平台...

    cmd操作命令和linux命令大全收集

    93. cliconfg-------SQL SERVER 客户端网络实用程序 94. Clipbrd--------剪贴板查看器 95. conf-----------启动netmeeting 96. certmgr.msc----证书管理实用程序 操作详解 net use ipipc$ " " /user:" " 建立IPC...

Global site tag (gtag.js) - Google Analytics