Bonjour
Je crois que j'essai de faire truc bizarre, mais je trouve pas d'autre moyen pour y arriver.
Je veux faire une fonction tabulaire qui va me retourner une table à deux champs et qui prends deux paramettres en entrée.
L'un de ces paramettre est une chaine contenant une liste de nombre séparés par des virgules. Dans la requête servant à fabriquer a table cette liste sert dans une clasue IN().
Voici le script de la fonction :
Et voici le message d'erreur qu'il me retourne à la crétation de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 CREATE FUNCTION [dbo].[MEET_TableCritereListeCheck] (@IdInfo INT, @Critere VARCHAR(1000)) RETURNS @tbl TABLE ( UserId UNIQUEIDENTIFIER, Valeur VARCHAR(1000) ) AS BEGIN /* DECLARE @IdInfo INT, @Critere VARCHAR(1000) SET @IdInfo = 6 SET @Critere = '1,3,4,5' */ EXEC('INSERT INTO @tbl (UserId, Valeur) SELECT IM.UserId, IM.Valeur_Info FROM dbo.SITE_Information_Membre IM WHERE IM.Id_Info_Formulaire = ' + @IdInfo + ' AND IM.Valeur_Info IN(' + @Critere + ')') RETURN END
D'abords je ne comprends pas trés le fondement de ce message. Mais surtout, je suis ennuyé car je ne trouve pas le moyen de transmettre la liste de nombre dans la clause IN() par un aute moyen.Utilisation non valide d'un opérateur présentant des effets secondaires ou d'un opérateur dépendant du temps 'EXECUTE STRING' dans une fonction.
Pouvez vous m'aider ?
Partager