The first parameter contains the dynamic SQL string. The second parameter is an optional column name the count statement operates on; the default is *.
/*
Counts the number of records in a dynamic sql string. Example usage:
declare @records int
exec @records = usp_CountRowsInDynamicSQL 'select recordId=5 union select recordId=6', 'recordId'
print @records
*/
Create proc usp_CountRowsInDynamicSQL (@sql varchar(800), @colNameToCount varchar(50) = '*' ) AS
declare @rowCount int
create table #tmpRowCount (row_Count int)
set nocount on
set @sql = 'insert into #tmpRowCount (row_Count) select count(' + @colNameToCount + ') from ( ' + @sql + ') x'
exec(@sql)
set @rowCount = (select top 1 row_count from #tmpRowCount)
set @rowCount = isnull(@rowCount,0)
set nocount off
drop table #tmpRowCount
return @rowCount
No comments:
Post a Comment