需要统计的表是根据规则动态生成,格式如下:
因此在这里考虑使用SQL提供的sp_executesql 函数,它可以执行动态的修改,查询,删除功能。该函数官方详细文档,如下:
Sp_executesql:执行可以多次重复使用或动态生成的 Transact-SQL 语句或批处理。Transact-SQL 语句或批处理可以包含嵌入参数。
语法 :
sp_executesql [ @statement = ] statement
[
{ , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' }
{ , [ @param1 = ] 'value1' [ ,...n ] }
]
官方详细文档:http://technet.microsoft.com/zh-cn/library/ms188001.aspx
完成任务:
在不确定表名的情况下,根据生成表名规则及查询条件,返回统计结果:
要求函数返回值类型为int,取对应字段的值返回
做法如下:
declare @AllCount int
declare @exesql nvarchar(1000);
--动态查询
set @exesql='select @temp = count(*) from [dbo].['+ @tableName +'] where ID='''+@ID +''''
exec sp_executesql @exesql,N'@temp int output', @AllCount output
select @AllCount;
结果:
将统计结果输出到变量@AllCount中。
提醒:
对于动态表名及字段使用非常简单,但获取结果使用动态语句是有一定规则的,如上面的列子,需要把表名声明成Nvarchar的,然后执行动态语句时,声明其动态语句中变量前也要加N ,如N'@a
Output:指示该参数为输出参数。
以上的相关内容就是对SQL server 动态查询的介绍。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-674566/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16436858/viewspace-674566/