bonjour,
Je crée sans souci la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE FUNCTION EffectifNonNul (@NOMVAR VARCHAR(128), @NOMTABLE VARCHAR(128))
RETURNS BIGINT
AS
BEGIN
IF @NOMTABLE IS NULL RETURN NULL
IF @NOMVAR IS NULL RETURN NULL
DECLARE @v_rowcount BIGINT
DECLARE @CODESQL VARCHAR(255)
SET @CODESQL='select @v_rowcount = count('+@NOMVAR+') from '+@NOMTABLE+' WHERE '+@NOMVAR+' IS NOT NULL'
exec sp_executesql @CODESQL
RETURN @v_rowcount
END
Quand je veux l'utiliser dans une requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
SELECT     dbo.EffectifNonNul('ind_dai_p', 'Vue_AM_F') AS NonManquant
FROM         Vue_AM_F
j'obtiens le message suivant :

Seules les fonctions et les procédures étendues peuvent être exécutées à partir d'une fonction.
'ind_dai_p' est une variable de la vue 'Vue_AM_F'

Pouvez-vous m'aider à comprendre le message d'erreur ?

Merci