SQL 存储过程变量赋值问题 20

@Countintset@sql='selectset@Count=count(*)from'+@table+'where'+@Sqlwhereexec(@sql)上面是... @Count int
set @sql='select set @Count = count(*) from '+@table+ ' where '+@Sqlwhere
exec(@sql)
上面是一个存储过程 这样保存存储过程没问题,但在Sql查询使用时 会有 ‘必须声明标量变量 "@Count"。’←这样的错误提示,请问哪位高手可以帮忙 如果为@Count 赋值 @Count是统计查询出来的总记录数。
展开
 我来答
华夏日长兴
2010-10-27 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3737万
展开全部
declare @user varchar(1000)declare @moTable varchar(20)

select @moTable = 'MT_10'declare @sql nvarchar(4000) --定义变量,注意类型

set @sql='select @user = count(distinct userid) from '+@moTable --为变量赋值

--执行@sql中的语句

exec sp_executesql @sql ,N'@user varchar(1000) out' --表示@sql中的语句包含了一个输出参数

,@user out --和调用存储过程差不多,指定输出参数值print @user 本例中,@moTable 为嵌入参数。

看看这个你就明白了
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
fanfanwuji
2010-10-29 · 超过22用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:45.6万
展开全部
create proc GetCount
@table nvarchar(50),
@Sqlwhere nvarchar(1000)
as
declare @SqlStr nvarchar(2000)
set @SqlStr='select count(1) from '+@table+' where '+@Sqlwhere+''
exec(@SqlStr)

这样就能直接返回了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nanhailibing
2010-10-28 · TA获得超过551个赞
知道小有建树答主
回答量:281
采纳率:100%
帮助的人:184万
展开全部
Declare @table varchar(1000)
Declare @Sqlwhere varchar(500)
Declare @sql varchar(5000)
Set @table = 'workflow'

Set @Sqlwhere = 'datetime between ''2007-01-01'' and ''2010-01-01'''

set @sql=' Declare @Count VARCHAR(20) select @Count = count(*) from '+@table+ ' where '+@Sqlwhere + 'PRINT @Count'
exec(@sql)
就你的问题,给你举了个例子。你看下。
其实问题就出在你定义的值上。我这个是没问题能运行的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2010-10-27 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3353万
展开全部
SQL Server
通过
SP_EXECUTESQL
的第2个参数来定义有哪些参数
输出的加OUTPUT

后面的参数为执行的时候,具体参数的数据。输出的加OUTPUT

下面是 例子代码 与 执行结果:

1> BEGIN
2> DECLARE @Sql NVARCHAR(200);
3> DECLARE @name VARCHAR(10);
4> SET @Sql = 'SELECT @name = name FROM test_dysql WHERE id=1';
5> PRINT @Sql;
6> EXEC SP_EXECUTESQL @Sql, N'@name VARCHAR(10) OUTPUT', @name OUTPUT;
7> PRINT @name;
8> END
9> go

SELECT @name = name FROM test_dysql WHERE id=1
A

更多关于 动态 SQL 的例子,看下面这个帖子:

http://hi.baidu.com/wangzhiqing999/blog/item/6f6da5fee476db869f51465d.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流香羽
2010-10-27 · TA获得超过1540个赞
知道小有建树答主
回答量:925
采纳率:50%
帮助的人:1353万
展开全部
declare @Count int
--使用 declare 声明SQL变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式