Bonjour,
peut on calculer une opération mathématique contenue dans une zone texte ?
je m'explique :
var1 := '(5+2)*3-1';
var1 est en varchar2, je voudrai calculer le contenu de var1 !
Merci de pour votre aide
Stéphane
Version imprimable
Bonjour,
peut on calculer une opération mathématique contenue dans une zone texte ?
je m'explique :
var1 := '(5+2)*3-1';
var1 est en varchar2, je voudrai calculer le contenu de var1 !
Merci de pour votre aide
Stéphane
oui biensur ke c faisable il faut mettre en oeuvre un mini analyseur lexical pour reussir à interpreter la valeur contenue dans la chaine de caractere.
tu peux songer à utiliser les fonctions "substr" pour decouper la chaine de carcteres.
length pour recuperer la longueur de la chaine de caracteres.
bon ya du travail a faire.
Code:
1
2
3
4
5
6
7 DECLARE var1 VARCHAR2(100) := '(5+2)*3-1'; var2 NUMBER ; BEGIN EXECUTE IMMEDIATE 'SELECT ' || var1 || ' FROM DUAL' INTO var2 ; DBMS_OUTPUT.PUT_LINE(var2); END;
Bonjour,
Voilà ce ke g fais:
Code:set serveroutput on
et voilà le résultat:Code:
1
2
3
4
5
6
7
8
9
10 declare var1 varchar2(250) := '(5+2)*3-1'; requete varchar2(250); resultat number; begin requete := 'select ' || var1 || ' from dual'; execute immediate requete into resultat; dbms_output.put_line('resultat est: ' || resultat); end; /
ah désolé le sheikh était plus rapide que moi, c'est l'expérience qui gagne ;)Code:
1
2
3 resultat est: 20 PL/SQL procedure successfully completed
Merci pour vos réponses, j'ai oublié de préciser que j'étais sous forms 6i, la procédure "EXECUTE IMMEDIATE" est rejetée !
+ post dans le mauvais forum... ça fait beaucoup :mrgreen:
Il va falloir créer une fonction dans la BDD qui prendra la chaine de calcul en entrée et retournera le résultat en sortie avec execute immediate.
Sinon, il faut mettre en oeuvre le package Forms EXEC_SQL qui est plus compliqué.
http://download-uk.oracle.com/otn_ho.../A73152_01.pdf
Merci, et désolé :oops: pour ce post dans ce forum, en tout cas vous m'avez trouver la solution !!
A +