• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sqlserver 存储过程中的top+变量使用分析(downmoon)
    存储过程中的TOP后跟一个变量会如何?
    复制代码 代码如下:

    Create proc getWorkPlan2
    (@intCounter int
    ,@lngUserID int)
    as
    select Top 5 lngWorkID,strWorkName,strExecHumanName,strBeginDate
    from worklist where lngExecHumanID= @lngUserID
    order by lngWorkID desc

    现在想将这里的Top 5 改为变量· Top @intCounter
    如下
    复制代码 代码如下:

    ALTER proc getWorkPlan2
    (@intCounter int
    ,@lngUserID int)
    as  
    )
    exec sp_executesql ('select Top '+convert(varchar(10),@intCounter)+' lngWorkID,strWorkName,strExecHumanName,strBeginDate from worklist where lngExecHumanID= '
    +convert(varchar(10),@lngUserID) +' order by lngWorkID desc '

    老是提示 在关键字 'convert' 附近有语法错误。
    OK!
    于是改为
    复制代码 代码如下:

    ALTER proc getWorkPlan2
    (@intCounter int
    ,@lngUserID int)
    as
    declare @strCounter varchar(10)
    set @strCounter=convert(varchar(10),@intCounter)
    declare @strUserID varchar(10)
    set @strUserID=convert(varchar(10),@lngUserID)
    exec sp_executesql ('select Top '+@strCounter+' lngWorkID,strWorkName,strExecHumanName,strBeginDate from worklist where lngExecHumanID= '
    +@strUserID +' order by lngWorkID desc '
    )

    后来,经saucer(思归)大哥提醒,发现可以用以下语句实现(sql2005/2008):
    复制代码 代码如下:

    Alter proc getWorkPlan2
    (
    @intCounter int
    ,@lngUserID int
    )
    as
    set rowcount @intCounter
    select lngWorkID,strWorkName,strExecHumanName,strBeginDate
    from worklist where lngExecHumanID= @lngUserID
    order by lngWorkID desc

    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    上一篇:SQL Server Management Studio Express管理器 没有导入导出数据的向导的解决方法
    下一篇:SQLServer 2008中通过DBCC OPENTRAN和会话查询事务
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sqlserver 存储过程中的top+变量使用分析(downmoon) sqlserver,存储,过程,中的,