As others have answered, you forgot a )
after the VARCHAR
:
EXEC('Select Count(*) Total
from '+@TableName+'
where fk_Orgs_PropertyDetails_OrgID='+ 'Cast('+@OrgID+' as varchar)');
However, I suggest not using EXEC
. Instead you should use sp_executesql
. This has an additional benefit of providing more security by preventing SQL Injection.
DECLARE @TableName VARCHAR(100),
@OrgID INT;
DECLARE @sql NVARCHAR(MAX);
SET @sql =
'SELECT COUNT(*) Total
FROM ' + QUOTENAME(@TableName) + '
WHERE fk_Orgs_PropertyDetails_OrgID = @OrgID';
EXEC sp_executesql
@sql,
N'@OrgID INT',
@OrgID
;
The above assumes that fk_Orgs_PropertyDetails_OrgID
is an INT
.
Further reading on dynamic SQL: