Hi,
I'm writing a small query where I have a dynamic table name and dynamic condition for the criteria. In order to execute this, I need Exec command.
exec(select count(*) from @.dynamictable where condition = @.dynamiccond)
But here I want to capture the count from the select statement. Could any of you help me capture the results from exec command?
Thanks
2 ways
USE pubs
GO
--sp_executesql
DECLARE @.chvTableName VARCHAR(100),
@.intTableCount INT,
@.chvSQL NVARCHAR(100)
SELECT @.chvTableName = 'Authors'
SELECT @.chvSQL = N'SELECT @.intTableCount = COUNT(*) FROM ' + @.chvTableName
EXEC sp_executesql @.chvSQL, N'@.intTableCount INT OUTPUT', @.intTableCount OUTPUT
SELECT @.intTableCount
GO
--EXEC (SQL)
DECLARE @.chvTableName VARCHAR(100),
@.intTableCount INT,
@.chvSQL NVARCHAR(100)
CREATE TABLE #temp (Totalcount INT)
SELECT @.chvTableName = 'Authors'
SELECT @.chvSQL = 'Insert into #temp Select Count(*) from ' + @.chvTableName
EXEC( @.chvSQL)
SELECT @.intTableCount = Totalcount from #temp
SELECT @.intTableCount
DROP TABLE #temp
Denis the SQL Menace
http://sqlservercode.blogspot.com/
Or:
DECLARE @.chvTableName VARCHAR(100)
CREATE TABLE #temp (Totalcount INT)
SELECT @.chvTableName = 'sysobjects'
insert into #temp(totalCount)
EXEC( 'Select Count(*) from ' + @.chvTableName)
SELECT * from #temp
DROP TABLE #temp
Note: it is generally considered a bad practice to do this sort of thing unless you are building some sort of tool. If this is a production application, it would be better to build a procedure per table:
create procedures count_accounts
as
select count(*) from account
go
Yes, it sounds like a lot of maintenance, but unless you build a large quantity of tables, it shouldn't be a big deal.
No comments:
Post a Comment