Select @start=UserID From @TableName Order By UserID
在存储过程中,表名使用变量@TableName,还有就是要把UserID赋值给变量@start
我这样写Execute( 'Select ' + @start + '=UserID From ' + @TableName + 'Order By UserID'),可是不正确, 应该怎么写语句呢?
...全文
24111打赏收藏
存储过程中,表名使用变量语句怎么写
Select @start=UserID From @TableName Order By UserID 在存储过程中,表名使用变量@TableName,还有就是要把UserID赋值给变量@start 我这样写Execute( 'Select ' + @start + '=UserID From ' + @TableName + 'Order By UserID'),可是不正确, 应该怎么写语句呢?
Set Nocount On
Begin
If @PageNum<=1 --页数为1或小于1
Begin
Set RowCount @PageSize --类似于Top
Execute('Select ' + @ShowFields + ' From SZY_User Where (' + @WhereStr + ') Order By ' + @OrderFields)
End
Else
Begin
Declare @start int,@end int,@Sum int,@i int,@sql nvarchar(4000)
Set @sql=N'Select @Sum=Count(*) From [' + @TableName + '] Where ' + @WhereStr
Execute sp_executesql @sql,N'@Sum int',@Sum --获得总记录数
If @PageNum>Ceiling(Convert(Decimal,@Sum)/@PageSize)
Begin
Set @PageNum=Ceiling(Convert(Decimal,@Sum)/@PageSize) --末页
End
Set @i=@PageSize*(@PageNum-1)
Set RowCount @i
就是这一行有错误:Set @sql=N'Select @start=UserID From ' + @TableName + 'Order By UserID'
Execute sp_execute @sql,N'@start int',@start
--Select @start=UserID From SZY_User Order By UserID --开始之前的一条记录,Where @WhereStr
Set @i=@PageSize*@PageNum
Set RowCount @i
Select @end=UserID From SZY_User Order By UserID --结束记录
Set RowCount 0
Execute('Select ' + @ShowFields + ' From SZY_User Where UserID>' + @start + 'And UserID<=' + @end + ' Order By ' + @OrderFields)
End
End
GO