使用@@,select case及Exec动态执行SQL语句:
CREATE PROCEDURE GetRecordsNumbers
@ItemName VARCHAR(50),
@StartDate VARCHAR(20),
@EndDate VARCHAR(20)
AS
BEGIN
declare @@tmpTableName varchar(50)
set @@tmpTableName=''
select @@tmpTableName=
CASE @ItemName
when '信息中心' then 'KS_Article'
when '市民服务' then 'KS_U_DemosService'
when '培训中心' then 'KS_U_pxzx'
when '理论研究' then 'KS_U_yjzx'
when '政务管理' then 'KS_U_zwxxzx'
when 'English' then 'KS_U_English'
else 'KS_Article'
End
exec('select '''+ @StartDate +''', '''+ @EndDate +''','''+@ItemName +''', count(*) from ' +@@tmpTableName + ' where AddDate >= ''' +@StartDate + ''' and AddDate<''' + @EndDate +'''')
End
批量执行时的另一存储过程:
CREATE PROCEDURE [GetAllRecordsCount]
@StartDate VARCHAR(20),
@EndDate VARCHAR(20)
AS
Begin
exec GetRecordsNumbers '信息中心', @StartDate, @EndDate
exec GetRecordsNumbers '市民服务', @StartDate, @EndDate
exec GetRecordsNumbers '培训中心', @StartDate, @EndDate
exec GetRecordsNumbers '理论研究', @StartDate, @EndDate
exec GetRecordsNumbers '政务管理', @StartDate, @EndDate
exec GetRecordsNumbers 'English', @StartDate, @EndDate
end