SQL Server 动态查询

今天做了一个根据动态生成表明来查询相关结果的存储过程,由于表名是动态生成,因此使用了SQL Server的动态查询,函数sp_executesql。写篇博客已记录开发过程中遇到的问题,以备查询。

需要统计的表是根据规则动态生成,格式如下:

 

因此在这里考虑使用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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值