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

存储过程中的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

邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。

时间: 2024-09-20 10:29:08

sqlserver 存储过程中的top+变量使用分析(downmoon)_mssql2005的相关文章

Excel表格中使用单变量求解分析数据的方法

  Excel表格中使用单变量求解分析数据的方法           1.打开工作簿,创建工作表,并在工作表中输入数据,同时在B10单元格中输入公式"=SUM(B3:B9)"计算费用总和,如图1所示. 图1 创建工作表 2.在"数据"选项卡的"数据工具"组中单击"模拟分析"按钮,在打开的下拉列表中选择"单变量求解"选项,如图2所示. 图2 选择"单变量求解"选项 3.打开"单变

SQLServer存储过程中事务的使用方法_MsSql

本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下 create proc usp_Stock @GoodsId int, @Number int, @StockPrice money, @SupplierId int, @EmpId int, @StockUnit varchar(50), @StockDate datetime, @TotalMoney money , @ActMoney money , @baseId int, @Description nvarcha

SQLServer存储过程中事务的使用方法

本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下 create proc usp_Stock @GoodsId int, @Number int, @StockPrice money, @SupplierId int, @EmpId int, @StockUnit varchar(50), @StockDate datetime, @TotalMoney money , @ActMoney money , @baseId int, @Description nvarcha

PHP模板引擎Smarty中的保留变量用法分析_php实例

本文实例讲述了PHP模板引擎Smarty中的保留变量用法.分享给大家供大家参考,具体如下: 在 Smarty 中,有一些保留变量,它们是不需要 PHP 脚本去分配就可以直接使用,即不用使用 $_tpl->assign('var','value') 去分配. 1.在模板中访问页面请求的变量 {$smarty.get.user} == $_GET['user'] {$smarty.post.user} == $_POST['user'] {$smarty.cookie.username} == $_

存储过程中如何利用变量将变量中的字符串进行连接?

问题描述 在存储过程中我有三个变量,分别赋值为字符串,我想利用这三个变量将这三个字符串进行连接.要怎么做啊,帮帮忙啊! 解决方案 解决方案二:问题没有描述清楚解决方案三:直接+好了解决方案四:连接什么呢?解决方案五:在设计存储过程时,定义好变量名和类型,然后在程序中调动这个存储过程时,可以用sqlcommand对象,设置CommandType为存储过程,Pr_CheckUser为将要调用的存储过程名,我在网上找的示例如下,没有测试,如有错误请见谅SqlCommandcmd=newSqlComma

sqlserver 存储过程中If Else的用法实例

为大家介绍sql server存储过程中if esle的用法,供大家学习参考.数据库中有两张表,A表主键为自动增长的并且是B表的外键且允许为空   现在要通过编程向B表中插入数据,可是在程序中是不允许给Int类型赋空值的如果不赋值就默认为0. 为了解决这个问题,用到了存储过程的If Else,下面是完整的存储过程. 代码示例: 复制代码 代码如下: create PROCEDURE [dbo].[P_Form_Control_Info_Add]     @TypeName varchar(20)

Sqlserver 存储过程中结合事务的代码_MsSql

复制代码 代码如下: --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[USP_ProcedureWithTransaction_Demo] GO -- ===================

Sqlserver 存储过程中结合事务的代码

复制代码 代码如下: --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[USP_ProcedureWithTransaction_Demo] GO -- ===================

sqlserver存储过程中SELECT 与 SET 对变量赋值的区别_MsSql

SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值.当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法.下表列出 SET 与 SELECT 的区别.请特别注意红色部分.   set select 同时对多个变量同时赋值 不支持 支持 表达式返回多个值时 出错 将返回的最后一个值赋给变量 表达式未返回值 变量被赋null值 变量保持原值 下面以具体示例来说明问题:create table chinadba1(userid int ,addr varchar(1