TSQL fonction pour renvoyer le nombre de lignes dans un jeu de résultats à partir d'une fonction

J'ai un travail qui effectue plusieurs contrôles de validation sur les lignes de plusieurs tables dans une base de données. Si la vérification échoue, il enregistre l'échec dans un tableau. Les informations enregistrées comprend le nom de la table, un type uniqueidentifier valeur de la ligne qui a échoué, ce qui vérifier qu'il a échoué, et l'emploi qui a été en cours d'exécution à l'époque. Voici la simplification de la définition de la table du journal

CREATE TABLE [tblSY_ValidationFieldFailures](
    [pkValidationFieldFailure] [int] IDENTITY(1,1) NOT NULL,
    [fkJobID] [int] NOT NULL,
    [fkValidationFieldFailureType] [int] NOT NULL,
    [TableName] nvarchar(128),
    [TableUniqueIdentifier] [nvarchar](100) NULL)

Je voudrais écrire une fonction qui retourne le nombre de lignes échoué étant donné une certaine table et jobID (c'est à dire fnGetNumberOfFailedRows(@JobID, @TableName)). J'ai essayé quelque chose de similaire à la suivante:

CREATE FUNCTION fnGetNumberOfRowsThatFailedValidationCheck 
(
    @pkJobID int,
    @TableName nvarchar(128)
)
RETURNS int
AS
BEGIN
    -- Declare the return variable here
    DECLARE @NumFailedRows int

    Select fkJobID, 
           TableUniqueIdentifier, 
           TableName 
    From tblSY_ValidationFieldFailures
        Where fkJobID=@pkJobID And TableName=@TableName
                    Group By fkJobID, TableName, TableUniqueIdentifier

    SET @NumFailedRows = @@ROWCOUNT

    RETURN @NumFailedRows    
END

Mais bien sûr, vous ne pouvez pas avoir cette instruction Select à l'intérieur d'une fonction. Est-il un moyen de faire ce que je veux à l'intérieur d'une fonction ou dois-je donc la procédure stockée en cours de route?