Bonjour,
je débute non sans mal dans les fonctions SQL.
Je tente de développer une fonction SQL qui recevra 2 paramètres à savoir une clé et un nom de langue et renverra soit:
1) la clé si celle-ci ne commence pas par "@LANG"
2) la valeur de traduction dans la langue précisée
3) la valeur de traduction dans une langue par defaut si la valeur dans la langue précisée n'existe pas (et tenter de gerer le fait que cette langue par défaut a pu aussi etre la langue précisée et que si rien n'est trouvé on renvoie la clé encore une fois).
Pour l'instant je tatonne, car je découvre :
Cette première version de ma fonction fonctionnait très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ALTER FUNCTION dbo.TRADUCTION (@cle varchar(79)) RETURNS varchar(79) AS BEGIN DECLARE @trad varchar(79) if @cle like('@LANGBDD%') SET @trad = 'Yep' ELSE SET @trad = @cle RETURN(@trad) END GO
J'ai voulu ajouter une requete SQL à la place de retourner 'yep' et patatra...
cela donne donc :
Je conçois ici que je n'ai pas mis la valeur traduite dans @trad parce que je ne sais pas comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 BEGIN DECLARE @trad varchar(79) if @cle like('@LANGBDD%') Select value as trad from TRANSLATION where id= @cle and lang='en' ELSE SET @trad = @cle RETURN(@trad) END
L'erreur qui m'est remontée doit venir de là : [Error Code: 444] La sélection d'instructions incluses dans une fonction ne peut pas renvoyer les données à un client.
(via dbvisualizer)
Auriez-vous une explication à me fournir concernant mon problème ?
De même, l'un d'entre vous aurait-il une idée d'une facon de selectionner la valeur traduite dans la langue précisée si présente ou dans une autre langue ('en') sinon en une seule requete ? (Après il me faudra tester si il a bien retourné une valeur pour l'une ou l'autre langue..)
Merci.
Bonne journée.
Partager