日期:2014-05-18  浏览次数:20386 次

存储过程语法不懂 跪求神仙解决
create procedure pcommon_fenye
{
  表名 需要返回的列,排序,两个排序,vpagesize,pageindex ,总记录,排序类型,查询条件
  @tblName varchar(400), -- 表名 
@strGetFields varchar(1500) = ' * ', -- 需要返回的列 
@strOrderKey varchar(100)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸 
@PageIndex int = 1, 
  @OrderType bit = 0, -- 页码
  @strWhere varchar(2000) = '', -- 查询条件 (注意: 不要加 where) 
@TotalCount int output -- 所有满足条件的记录总数
}
as
declare @strsql varchar(5000) 
  @tmpstrsql nvarchar(1000)
  @pagetotal int
  if(@strWhere != '')

  set @tmpstrsql = N'select @total =count (*)from '+ @tblName +'where'+@strWhere 
  else
  set @tmpstrsql = N'select @total =count (*)from '+ @tblName 
 exec sqexecutesql @tmpstrsql ,N'@total int output,@TotalCount output
 得到总页数
 set @pagetotal = (@TotalCount +@PageSize -1)/@PageSize 
请问sqexecutesql @tmpstrsql 是什么时候执行,N'@total int output,@TotalCount output是什么意思
set @pagetotal = (@TotalCount +@PageSize -1)/@PageSize @TotalCount是怎么得到的?  
@OrderType bit = 0, bit 是什么类型



------解决方案--------------------
楼主,你这是在问什么啊???

看那代码,是在"pcommon_fenye"过程里为@total参数赋值(在子语句里动态执行),接着为@tmpstrsql 赋值

然后在再调用另一存储过程"sqexecutesql",传递刚赋值的参数,完后

再执行set @pagetotal = (@TotalCount +@PageSize -1)/@PageSize @TotalCount语句

然后 "pcommon_fenye"过程结束.

set @pagetotal = (@TotalCount +@PageSize -1)/@PageSize @TotalCount是怎么得到的?
这些都是参数啊,有的是定义时给的值,有的是执行过程中赋予的.

@TotalCount int output -- 所有满足条件的记录总数后面的output说明它是个输出参数,给它赋值后,可以像变量一样取得它的值.
------解决方案--------------------
sql代码没看明白。。。
转:
SQL Server 中的 bit 类型的使用
1。往数据库中添加,修改 bit 类型的字段时,只能用 0 或者 1。
2。在SQL语句中也只能用 0 或者 1,比如 "where bFlag=1" 不能用 "where bFlag=TURE"。
3。在使用RecordSet 将bit字段的数据取出来后,转换为了 Boolean 类型。这个时候判断要用 TRUE 和 FALSE
------解决方案--------------------

select @TotalCount as total --记录总数
print (@strSQL)打印当前SQL 语句,调试的时候方便
@TotalCount 可以返回
------解决方案--------------------
exec sqexecutesql @tmpstrsql ,N '@total int output,@TotalCount output 
这是执行存储过程 sqexecutesql 后面的变量是存储过程用到的参数,其中 @TotalCount 是输出参数,输出的是总记录数
提供给下面的SQL来计算总页数
set @pagetotal = (@TotalCount +@PageSize -1)/@PageSize