LES PROCEDURES ET LES FONCTIONS STOCKEES

 

PROCEDURES

Sous MySql :

CREATE PROCEDURE augcomm(nomvend varchar(50))

BEGIN

   DECLARE           tx FLOAT;

   DECLARE           moyenne FLOAT;

   DECLARE           salaire FLOAT;

 

   select sal into salaire from emp

   where ename = nomvend

   and job = 'SALESMAN';

  

   select avg(sal) into moyenne from emp

   where job = 'SALESMAN';

   if salaire <= moyenne then

                   Set tx = 1.05;

   else

                   Set tx = 1.03;

   end if;

   update emp

   set comm = comm * tx

   where ename = nomvend;

END|


Sous MySql

CREATE Procedure hierarchie(nomemp varchar(50))

BEGIN

   DECLARE metier varchar(40);

   DECLARE superieur int;

   DECLARE nom varchar(50);

 

   delete from resultat;

   select job, mgr into metier, superieur

   from emp

   where ename = nomemp;

   insert into resultat

   values (nomemp, metier);

   WHILE (superieur is not NULL) DO

                  select job, mgr, ename

                  into metier, superieur, nom

                  from emp

                   where empno = superieur;

                   insert into resultat

                   values (nom, metier);

   END WHILE ;

End|

 


Sous MySql

DELIMITER |

CREATE PROCEDURE camois(pannee int)

BEGIN

                DECLARE tot float;

                DECLARE i int;

               

                DELETE FROM ca;

                SET i = 1;

                WHILE(i <= 12) DO

                                SELECT IFNULL(sum(qte * prixcons), 0)

                                INTO tot

                FROM facture f, ligne_fact l, conso c

                                WHERE f.numfact = l.numfact

                                AND c.numcons = l.numcons

                                AND YEAR(datefact) = pannee

                                AND MONTH(datefact) = i;

 

                                INSERT INTO ca values (pannee, i, tot);

                                SET i = i + 1;

                END WHILE;     

END |

                Sous MySql.

                               Call camois(2006);


FONCTIONS

 

Sous MySql

create function meilleur(an int)

returns varchar(50)

DETERMINISTIC

begin

declare   nom varchar(40);

 

select s.nomserv

into nom

from conso, ligne_fact, facture, serveur s

where conso.numcons = ligne_fact.numcons

and ligne_fact.numfact = facture.numfact

and s.numserv = facture.numserv

and year(datefact)=an

 group by s.nomserv

having sum(prixcons*qte) >= all

(select sum(prixcons*qte)

from conso, ligne_fact, facture

where conso.numcons = ligne_fact.numcons

and ligne_fact.numfact = facture.numfact

and year(datefact)=an

group by facture.numserv);

 

return nom;

end|

 

Sous MySql

        Select NomFonction(paramètres) ;

 

Pour visualiser les procédures ou fonctions :

Show procedure status     ou

Show function status

 

Pour visualiser la structure des procédures ou des fonctions :

Show create procedure nomprocedure        ou

Show create function nomfonction