sql求助

sxiaohui8709253 2010-03-19 12:56:52
ALTER PROCEDURE [dbo].[procSortPage]
(
@sqlString varchar(4000), --查询数据的语句
@PageSize int= 10, --页尺寸
@PageIndex int= 1, --页码
@PageCount int=0 output --总页数
)
AS
declare @RowCount int --总记录数
declare @strSelRowCount varchar(4000) --用来查询总记录数
set @strSelRowCount='select @RowCount= count(*) from ( '+@sqlString+' ) t'
exec (@strSelRowCount)
set @PageCount=@RowCount/@PageSize+1

执行的时候
declare @pagecount int;
exec procSortPage 'select * from test',2,2,@pagecount output

会报
消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@RowCount"。
我上面定义了"@RowCount
请F姐姐 77哥 树哥。。众高手帮我看看,谢谢
...全文
206 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxiaohui8709253 2010-03-19
  • 打赏
  • 举报
回复
恩 多谢各位大师指点
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[procSortPage]
(
@sqlString varchar(4000), --查询数据的语句
@PageSize int= 10, --页尺寸
@PageIndex int= 1, --页码
@PageCount int=0 output --总页数
)
AS
declare @RowCount int --总记录数
declare @strSelRowCount nvarchar(4000) --该语句用来查询总记录数
set @strSelRowCount=N'select @RowCount= count(*) from ( '+@sqlString+' ) t'+' '
execute sp_executesql @strSelRowCount, N'@RowCount int output',@RowCount output
set @PageCount=@RowCount/@PageSize+1 --这里不严密 没判断刚好整出的情况
print @PageCount

这样可以了 原来@strSelRowCount 这个数据类型要nvarchar才可以 结贴了 ,谢谢大家
sql_sf 2010-03-19
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[procSortPage]
(
@sqlString varchar(4000), --查询数据的语句
@PageSize int= 10, --页尺寸
@PageIndex int= 1, --页码
@PageCount int=0 output --总页数
)
AS
declare @RowCount int --总记录数
declare @strSelRowCount varchar(4000) --用来查询总记录数
set @strSelRowCount='select @RowCount= count(*) from ( '+@sqlString+' ) t'
sp_executesql @strSelRowCount,N'@RowCount output',@RowCount output
set @PageCount=@RowCount/@PageSize+1
go
declare @pagecount int;
exec procSortPage 'select * from test',2,2,@pagecount output
select @pagecount
sxiaohui8709253 2010-03-19
  • 打赏
  • 举报
回复
或者我想把执行select count(*) from ( select * from test ) t的结果给@RowCount的 怎么写,谢谢了
sxiaohui8709253 2010-03-19
  • 打赏
  • 举报
回复
print @strSelRowCount
的结果是set @RowCount=( select count(*) from ( select * from test ) t)

就是这句话用exec (@strSelRowCount)执行的时候
老报消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@RowCount"

是exec (@strSelRowCount) 就执行不了啊
sxiaohui8709253 2010-03-19
  • 打赏
  • 举报
回复
恩 我去看看
--小F-- 2010-03-19
  • 打赏
  • 举报
回复
declare @pagecount int;
exec procSortPage 'select * from test',2,2,@pagecount output


这里输出参数 用SP_EXECUTESQL 执行
SQL77 2010-03-19
  • 打赏
  • 举报
回复
先PRINT 出来看看@SQL语句,

用SP_EXECUTESQL 执行
内容概要:本文针对孤岛微电网在运行中面临的功率分配不均、电压频率波动等问题,提出了一种基于多智能体一致性演化的自适应虚拟阻抗容错控制与二次稳态补偿机制,并通过Simulink平台进行仿真实现。研究采用多智能体系统(MAS)框架,将各分布式电源建模为具备局部信息交互能力的智能体,利用一致性算法实现全局协同控制;结合自适应虚拟阻抗技术动态调节等效输出阻抗,有效克服线路阻抗差异导致的有功与无功功率耦合问题,提升功率均分精度;同时设计二次控制补偿环节,消除一次下垂控制引入的静态偏差,恢复电压和频率至额定水平。该机制具备良好的容错能力,在部分节点发生故障或通信中断时可自动重构控制结构,维持系统稳定运行,适用于高可靠性和自治性要求的孤岛微电网场景。; 适合人群:具备电力系统、自动化或电气工程等相关专业背景,熟悉微电网控制、多智能体系统理论及现代控制方法的研究生、科研人员及工程技术人员。; 使用场景及目标:①为孤岛微电网提供高精度、强鲁棒性的分布式协同控制解决方案;②解决传统下垂控制中存在的功率分配不准与电能质量下降问题;③实现系统在故障扰动下的自主容错与快速恢复,提升微电网的自愈能力与运行可靠性。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制策略的实现细节,重点关注多智能体通信拓扑构建、一致性协议设计、虚拟阻抗自适应律以及二次补偿控制器的参数整定方法,同时可通过修改故障场景和通信条件进行对比实验,全面掌握该机制的动态响应特性与适应范围。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧