Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 13/12/2007, 17h37   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 1
Points : 1
Par défaut Ordre d'execution des expressions dans un block IF



Sur Oracle 10g (10.2.0.3)

Exemple : if ( (expression1) or (exression2) or (expression3) ) then .... end if;

je voudrais savoir, si comme dans mon exemple :
1. Si le test de l'expression1 renvoie TRUE, est-ce-que Oracle effectue quand même les autres expressions bien qu'elle soit inutile

2. Est-ce-que l'ordre des expressions est toujours respecté ? Cad si Oracle fait d'abord expression1 puis expression2, .... Ou alors dans un ordre que lui seul décide ?

Merci
slegall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 17h59   #2
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Le code suivant avec les résultats de son exécution le montre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
SET echo ON
DROP TABLE test purge
 
DROP TABLE test succeeded.
CREATE TABLE test (a date)
 
CREATE TABLE succeeded.
CREATE OR REPLACE FUNCTION f RETURN number
AS
begin
  INSERT INTO test VALUES (sysdate);
  RETURN 1;
end f;
/
 
FUNCTION f Compiled.
begin
  IF 1 = 1 OR f() = 1 then
    NULL;
  end IF;
end;
/
anonymous block completed
SELECT * FROM test
 
A                         
------------------------- 
 
0 rows selected
 
begin
  IF 1 = 0 OR f() = 1 then
    NULL;
  end IF;
end;
/
anonymous block completed
SELECT * FROM test
 
A                         
------------------------- 
13/12/07                  
 
1 rows selected
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 19h19   #3
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
C'est que la documentation Oracle appelle l'évaluation "circuit court".
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 09h04   #4
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 1
Points : 1
C'est justement la documentation que je recherchai

slegall est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h36.


 
 
 
 
Partenaires

Hébergement Web