Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2006, 16h23   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Par défaut Fonction PL/SQL équivalente à IFNULL() de Sybase

bonjour,

je veux savoir une fonction Oracle PL/SQL Developper qui fait la même chose que celle IFNULL() de Sybase Interactive sql.

c urgent. merci d'avance.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h27   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
et si tu nous expliquais ce que fais IFNULL ?
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h33   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
NVL
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h52   #4
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
bon voilà ce que fait fait IFNULL(expr1,expr2,[expr3]) :

- si expr1 a une valeur nulle, la valeur de expr2 est retournée.
- si expr1 n'est pas nulle, expr3 est renvoyée.
- Si expr1 n'est pas nulle et il n'a pas de expr3(optionnelle), NULL est retournée.

Ben, j'ai vu la fonction NVL() mais elle prend 2 paramétres seulement alors que la IFNULL que je veux utilser en prends 3.

de l'aide svp

madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h54   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
NVL2 ou DECODE
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h58   #6
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> CREATE TABLE test ( a varchar2(10)); 
TABLE créée.
SQL> INSERT INTO test VALUES (NULL); 
1 ligne créée.
SQL> INSERT INTO test VALUES ('a'); 
1 ligne créée.
SQL> INSERT INTO test VALUES (NULL); 
1 ligne créée.
SQL> INSERT INTO test VALUES ('b');
1 ligne créée.
SQL> commit ;
Validation effectuée.
SQL> SELECT decode (a,NULL,'EXPR2','EXPR3') FROM test  ; 
DECOD
-----
EXPR2
EXPR3
EXPR2
EXPR3
SQL> DROP TABLE test ; 
TABLE supprimée.
SQL>
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h05   #7
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
Et NVL2() ?

Citation:
NVL2 lets you determine the value returned by a query based on whether a specified expression is null or not null. If expr1 is not null, then NVL2 returns expr2. If expr1 is null, then NVL2 returns expr3. The argument expr1 can have any datatype. The arguments expr2 and expr3 can have any datatypes except LONG.
If the datatypes of expr2 and expr3 are different, then Oracle converts expr3 to the datatype of expr2 before comparing them unless expr3 is a null constant. In that case, a datatype conversion is not necessary.
The datatype of the return value is always the same as the datatype of expr2, unless expr2 is character data, in which case the return value's datatype is VARCHAR2.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h07   #8
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
voila l'instruction sous Sybase que je veux reprendre sous PL/SQL Developper : cmpt_package:=IFNULL(cmpt_package,cmpt_package,string(cmpt_package,'\\'));
Là, tu vois bien que NVL ne tiendra pas .
je ne vois pas avec le DECODE().

madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h09   #9
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
pour faire plaisir à mon parrain

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> CREATE TABLE test ( a varchar2(10)); 
TABLE créée.
SQL> INSERT INTO test VALUES (NULL); 
1 ligne créée.
SQL> INSERT INTO test VALUES ('a'); 
1 ligne créée.
SQL> INSERT INTO test VALUES (NULL); 
1 ligne créée.
SQL> INSERT INTO test VALUES ('b');
1 ligne créée.
SQL> commit ;
Validation effectuée.
SQL> SELECT NVL2 (a,'EXPR2','EXPR3') FROM test  ; 
NVL2(
-----
EXPR3
EXPR2
EXPR3
EXPR2
SQL> DROP TABLE test ; 
TABLE supprimée.
SQL>
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h14   #10
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 530
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 530
Points : 6 460
Points : 6 460
Citation:
Envoyé par Jaouad
pour faire plaisir à mon parrain
ben oui, un parrain ça se bichonne !
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h14   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par madina
voila l'instruction sous Sybase que je veux reprendre sous PL/SQL Developper : cmpt_package:=IFNULL(cmpt_package,cmpt_package,string(cmpt_package,'\\'));
Là, tu vois bien que NVL ne tiendra pas .
je ne vois pas avec le DECODE().

LE MONSIEUR TE DIT NVL2
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h15   #12
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
Citation:
Envoyé par SheikYerbouti
ben oui, un parrain ça se bichonne !
Ok Bichou
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h17.


 
 
 
 
Partenaires

Hébergement Web