Extraire la valeur de retour à partir de SQL dynamique

J'ai une procédure stockée qui génère et exécute un morceau de la dynamique de T-SQL qui, une fois construit, on dirait que cette

SELECT 
    tblUsers.strUserName AS [Username]
    ,tblUsers.strEmail AS [Email]
    ,tblUserAuditLog.strIpAddress AS [IP Address]
    ,tblUserAuditLog.dtAuditTimeStamp AS [Timestamp]
    ,tblUserAuditLog.strAuditLogAction AS [Action]
    ,tblUserAuditLog.strLogDetails AS [Details]
FROM         
    tblUserAuditLog 
        LEFT OUTER JOIN tblUsers 
        ON tblUserAuditLog.intUserIdFK = tblUsers.intUserId
WHERE 
    tblUsers.strUserName = 'a12jun'
    AND tblUserAuditLog.dtAuditTimeStamp >= '2012-08-10'

Cette requête peut renvoyer plusieurs milliers de lignes dans l'environnement de dev et sera de retour beaucoup plus en live.

Je veux savoir le nombre de lignes de la dynamique de la requête retourne avant que je retourne en fait les résultats, de sorte que, si le nombre est plus que limite, je peux retourner un étroit votre requête " message d'erreur.

J'ai essayé de générer un autre morceau de SQL comme ceci:

DECLARE @sqlrowcount NVARCHAR(MAX);
SET @sqlrowcount = 'SELECT COUNT(*) FROM (' + @sql + ') AS TEMP';
EXEC(@sqlrowcount);

IF @@ROWCOUNT > @limit BEGIN .... END

@sql est la dynamique de la requête. J'ai ensuite embarrassante rendu compte que EXEC(@sqlrowcount) retournera toujours 1, parce qu'elle renvoie un enregistrement dont la valeur est le nombre d'enregistrements.

Est-il un (relativement) simple et élégant de le faire, par exemple, sans écrire le résultat dans une table temporaire?

OriginalL'auteur Arj | 2012-08-30