sql output变量需要声明几次

先粘贴我的代码如下:ALTERprocedure[dbo].[GetList]@TableNameVARCHAR(30),@FieldsVARCHAR(50),@Wher... 先粘贴我的代码如下:

ALTER procedure [dbo].[GetList]
@TableName VARCHAR(30),
@Fields VARCHAR(50),
@Wherecase VARCHAR(50),
@PageSize int,
@PageIndex int,
@OrderName VARCHAR(30),
@OrderType VARCHAR(30),
@OutCount int OUTPUT
AS
declare @sql varchar(max),@begin int,@end int
set @begin=(@PageIndex-1)*@PageSize
set @end = @PageIndex*@PageSize
set @sql='select * from (select Row_Number() over
(Order by '+@OrderName+' '+ @OrderType+') as rn ,* from '+ @TableName +') U
where U.rn between '+cast(@begin as varchar)+' and '+ cast(@end as varchar)
exec(@sql)

这样的话系统自检不会报错,但是运行的时候说要 必须声明标量变量 "@OutCount"。
网上查了一下解决办法,说是要declare @OutCount out再声明一次,但是这样系统自检都过不了,更别说是运行了···
求大神帮助啊!!!
忘了说,如果添加declare @OutCount out 系统会报错
变量名 '@OutCount' 已声明。变量名在查询批次或存储过程内部必须唯一。
展开
 我来答
Andy_Sun321
推荐于2016-01-25 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:729万
展开全部

你的代码没有贴完整, 这些代码中都没有使用outCount变量。

是不是在动态生成的SQL语句(@sql中)有使用@outCount变量? 如果是的话,使用存储过程sp_executesql来执行动态生成的SQL语句,它可以传递参数值的,参考SQL Server的帮助文档就可以找到其调用形式:

execute sp_executesql [ @stmt = ] stmt

    {, [@params=] N'@parameter_name data_type [ [ OUT [ PUT ][,...n]' } 
     {, [ @param1 = ] 'value1' [ ,...n ] }

其第二个参数可以定义动态SQL中用到的变量,这是一个字符串(要注意用N起始);从第三个参数开始,是给第二个参数中定义的变量的赋值(同时可以指定输入,输出)。

追问
这个问题的原因我找到,因为我用的NAVICAT链接的SQL SERVER,可能这个软件有问题吧,我直接在SQL SERVER MANAGE STUDIO里运行就没有问题~
想向你再请教一个问题,就是我有一个想法,就是我通过存储过程返回2个数据,就是说我要给这个存储过程传一个参数coun用来记录总条数,存储过程执行完了要返回一个表给我,还要把这个参数返给我
追答
存储过程要返回结果集就要使用游标来返回了。可以参考SQL Server连接丛书中的"从存储过程中返回数据"(在查找中输入即可找到)。
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式