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是统计查询出来的总记录数。 展开
set @sql='select set @Count = count(*) from '+@table+ ' where '+@Sqlwhere
exec(@sql)
上面是一个存储过程 这样保存存储过程没问题,但在Sql查询使用时 会有 ‘必须声明标量变量 "@Count"。’←这样的错误提示,请问哪位高手可以帮忙 如果为@Count 赋值 @Count是统计查询出来的总记录数。 展开
5个回答
展开全部
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 为嵌入参数。
看看这个你就明白了
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 为嵌入参数。
看看这个你就明白了
展开全部
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)
这样就能直接返回了
@table nvarchar(50),
@Sqlwhere nvarchar(1000)
as
declare @SqlStr nvarchar(2000)
set @SqlStr='select count(1) from '+@table+' where '+@Sqlwhere+''
exec(@SqlStr)
这样就能直接返回了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
就你的问题,给你举了个例子。你看下。
其实问题就出在你定义的值上。我这个是没问题能运行的。
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)
就你的问题,给你举了个例子。你看下。
其实问题就出在你定义的值上。我这个是没问题能运行的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
通过
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
declare @Count int
--使用 declare 声明SQL变量
--使用 declare 声明SQL变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询