2012-05-28 6 views
0

J'ai un ensemble de fonctions pl/sql, tous retournant un type booléen.
J'appelle ces fonctions d'une autre fonction pl/sql une par une. Je veux "accumuler" les résultats et le renvoyer de cette fonction.arithmétique booléenne dans plsql

Par exemple:

v_res boolean; 
    v_res2 boolean := true; 
begin 
    v_res := f1('aa'); 
    if v_res = false then 
    v_res2 := false; 
    end if; 

    v_res := f2('aa'); 
    if v_res = false then 
    v_res2 := false; 
    end if; 

    -- some other calls to other functions 

    return v_res2; 
end; 

Je me demandais, je peux faire de l'arithmétique booléenne dans pl/sql?
je veux dire quelque chose comme ceci:

v_res boolean := true; 
begin 
    v_res := v_res * f1('aa'); 
    v_res := v_res * f2('aa'); 
    -- more calls to functions 
    return v_res; 
end; 

J'ai essayé:

v_res := v_res * false; 

et

v_res := v_res and false; 

mais la seule chose qui semble fonctionner convertissait le booléen à un int (I essayé avec sys.diutil.bool_to_int) qui ne se sent pas bien ...

+0

'v_res * false' - qu'attendez-vous de cette expression étrange? – zerkms

+2

Votre dernière tentative fonctionne: 'v_res: = v_res et f1 ('aa');' –

+0

@TonyAndrews, Vous avez absolument raison! Je n'ai aucune idée de ce qui s'est passé la dernière fois que j'ai vérifié ... – Bassal

Répondre

3
begin 
    return f1('aa') 
    and f2('aa') 
    ... etc. ... 
    ; 
end;