救命呀!!!!!!!!!!!!!!!!!!!!!!!!!! 20CSDN]

发布时间:2016-12-9 17:54:06 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"救命呀!!!!!!!!!!!!!!!!!!!!!!!!!! 20CSDN]",主要涉及到救命呀!!!!!!!!!!!!!!!!!!!!!!!!!! 20CSDN]方面的内容,对于救命呀!!!!!!!!!!!!!!!!!!!!!!!!!! 20CSDN]感兴趣的同学可以参考一下。

CREATE PROC sp_FKPager     @sField        varchar(1024), --显示字段     @sTableName    varchar(1024), --读取表名     @sFKTableName  varchar(1024),       --关系表名     @sWhere        varchar(1024), --查询条件     @sOrderby      varchar(1024), --排序规则,一定要DESC或ASC     @sID           varchar(1024), --表主键,以此为计算行数     @PageSize      int, --每页显示数     @PageNo        int --页码 AS SET NOCOUNT ON DECLARE @sSQL nvarchar(4000), @tmpIndex int, @P int SET @sSQL   =   '' SET @tmpIndex   =   -1 IF @PageNo < 1     SET @PageNo = 1 IF @PageSize < 1     SET @PageSize = 10 --总记录数 SET @sSQL   =   'SELECT COUNT(' + @sID + ') AS RecordSet FROM ' + @sTableName IF @sWhere <> ''     SET @sSQL   =   @sSQL + ' WHERE ' + @sWhere --print @sSQL EXEC(@sSQL) IF @PageNo = 1     BEGIN         SET ROWCOUNT @PageSize         SET @sSQL   =   'SELECT ' + @sField + ' FROM ' + @sFKTableName         IF @sWhere <> ''             SET @sSQL   =   @sSQL + ' WHERE ' + @sWhere         IF @sOrderby <> ''             SET @sSQL   =   @sSQL + ' ORDER BY ' + @sOrderby         --print @sSQL         EXEC(@sSQL)         RETURN     END --不是第一页 SET @P = (@PageNO - 1) * @PageSize SET ROWCOUNT @P SET @sSQL   =   'SELECT @Index = ' + @sID + ' FROM ' + @sTableName IF @sWhere <> ''     SET @sSQL   =   @sSQL + ' WHERE ' + @sWhere IF @sOrderby <> ''     SET @sSQL   =   @sSQL + ' ORDER BY ' + @sOrderby EXECUTE sp_executesql @sSQL, [email protected] int OUT', @Index = @tmpIndex OUTPUT  就是这句了,这句什么意思呀,帮忙解释一下?????? --print @tmpIndex SET @sSQL = 'SELECT ' + @sField + ' FROM ' + @sFKTableName IF @sWhere = ''     BEGIN         IF CHARINDEX('DESC', @sOrderby) <> 0             SET @sSQL   =   @sSQL + ' WHERE ' + @sID + ' < ' + Convert(Nvarchar(50), @tmpIndex)         ELSE             SET @sSQL   =   @sSQL + ' WHERE ' + @sID + ' > ' + Convert(Nvarchar(50), @tmpIndex)     END ELSE     BEGIN         IF CHARINDEX('DESC', @sOrderby) <> 0             SET @sSQL   =   @sSQL + ' WHERE ' + @sID + ' < ' + Convert(Nvarchar(50), @tmpIndex) + ' AND (' + @sWhere + ')'         ELSE             SET @sSQL   =   @sSQL + ' WHERE ' + @sID + ' > ' + Convert(Nvarchar(50), @tmpIndex) + ' AND (' + @sWhere + ')'     END IF @sOrderby <> ''     SET @sSQL   =   @sSQL + ' ORDER BY ' + @sOrderby --print @sSQL SET ROWCOUNT @PageSize EXEC(@sSQL) SET NOCOUNT OFF GO

[email protected]   =   'SELECT @Index = ' + @sID + ' FROM ' + @[email protected] sp_executesql的用法可以参考联机帮助,表达能力不行,给你个例子参考一下 create table a(id int) insert into a select 1 go declare @tbname nvarchar(10) set @tbname='a' declare @sql nvarchar(4000) declare @count int declare @t int set @sql=N'select @count=count(*) from [[email protected]+']' exec sp_executesql @sql,[email protected] int output',@[email protected] output select @t drop table a

sp_executesql执行动态产生的sql语句, 第一个参数是sql命令,其中可以含有参数, 第二个是sql命令中参数的定义,可以指定其IN, OUTPUT属性 第三个是传给sql命令的参数列

上一篇:寻求帮助,SQL2005无法还原SQL2000数据库 20CSDN]
下一篇:十万火急!关于权限问题! 100CSDN]

相关文章

相关评论