Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction iif dans une requête

3 réponses
Avatar
Paul
Bonjour,

J'ai déjà créé une fonction iif sur le modèle :
FUNCTION IIF(@Condition bit, @TruePart sql_variant, @FalsePart sql_variant)
RETURNS sql_variant AS BEGIN IF @Condition = 1 RETURN @TruePart RETURN
@FalsePart END

Malheureusement lorsque je l'utilise dans une requête, ça me renvoie une
erreur de syntaxe.
Par exemple :
select iif(monchamp=56,1,0), champ1, champ2 from matable

Comment pourrais-je utiliser ma fonction dans une requête ?
Merci.

--
Paul

3 réponses

Avatar
Paul
J'ai vu qu'on pouvait utiliser CASE WHEN ... THEN ... ELSE .... END.
Je vais me débrouiller avec ça.

--
Paul


"Paul" a écrit dans le message de
news:
Bonjour,

J'ai déjà créé une fonction iif sur le modèle :
FUNCTION IIF(@Condition bit, @TruePart sql_variant, @FalsePart


sql_variant)
RETURNS sql_variant AS BEGIN IF @Condition = 1 RETURN @TruePart RETURN
@FalsePart END

Malheureusement lorsque je l'utilise dans une requête, ça me renvoie une
erreur de syntaxe.
Par exemple :
select iif(monchampV,1,0), champ1, champ2 from matable

Comment pourrais-je utiliser ma fonction dans une requête ?
Merci.

--
Paul




Avatar
Fred BROUARD
Paul a écrit :
Bonjour,

J'ai déjà créé une fonction iif sur le modèle :
FUNCTION IIF(@Condition bit, @TruePart sql_variant, @FalsePart sql_variant)
RETURNS sql_variant AS BEGIN IF @Condition = 1 RETURN @TruePart RETURN
@FalsePart END

Malheureusement lorsque je l'utilise dans une requête, ça me renvoie une
erreur de syntaxe.
Par exemple :
select iif(monchampV,1,0), champ1, champ2 from matable

Comment pourrais-je utiliser ma fonction dans une requête ?
Merci.




1) une fonction doit impérativement être préfixée par le nom de schéma
auquel elle apartient (par défaut dbo)

select dbo.iif(monchampV,1,0), champ1, champ2
from matable

2) effectivement vous pouvez utiliser le CASE qui est optimisé plutôt
que votre fonction. CASE fait partie de la norme SQL alors que iif
n'existe pas en SQL.

A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Paul
"Fred BROUARD" a écrit dans le message de
news:%

1) une fonction doit impérativement être préfixée par le nom de schéma
auquel elle apartient (par défaut dbo)

select dbo.iif(monchampV,1,0), champ1, champ2
from matable

2) effectivement vous pouvez utiliser le CASE qui est optimisé plutôt
que votre fonction. CASE fait partie de la norme SQL alors que iif
n'existe pas en SQL.




Merci pour ces informations. Le CASE marche très bien.

--
Paul