--------------------------------------------------------------------------------
ex_mpphp.txt
--------------------------------------------------------------------------------
ex_mpphp.sql
--------------------------------------------------------------------------------
create table produit (
nom varchar2(20),
prix int,
qte int
);
create or replace procedure p(
x int,
y out int)
is
begin
y:=x+1;
end;
/
create or replace function f(
x int)
return integer
is
begin
return x+1;
end;
/
create or replace procedure q(
x varchar2,
y out varchar2)
is
begin
y:=x||' : OK ';
end;
/
Entreprise Aux p'tits cours
Bienvenue ! Vous ne serez pas déçus
Tout, tout, tout, vous saurez tout sur...
Insertion d'un produit :
";
$c = ocilogon('c##ewaller_a', 'ewaller_a', 'dbinfo');
$texte = "insert into produit values(".
"'".$nom."', ".$prix.", ".$qte.")";
echo "(debug : ".$texte.
" : copié-collable sous SQL*Plus sans ; )
";
$ordre = ociparse($c, $texte);
ociexecute($ordre);
ocilogoff($c);
?>
Entreprise Aux p'tits cours
Insertion d'un produit :
";
$c = ocilogon('c##ewaller_a', 'ewaller_a', 'dbinfo');
// erreur 1 : erreur login
/* gestion basique :
if (!$c) {
echo "Echec connection, j'arrete !
";
return;
}
*/
// erreur 2 : retirer quotes varchar2 dans insert :
$texte = "insert into produit values(".
"'".$nom."', ".
// $nom.", ".
$prix.", ".$qte.")";
echo "(debug : ".$texte.
" : copié-collable sous SQL*Plus sans ; )
";
$ordre = ociparse($c, $texte);
ociexecute($ordre);
ocilogoff($c);
?>
Entreprise Aux p'tits cours
Affichage produits prix inferieur ou egal a :
";
$c = ocilogon('c##ewaller_a', 'ewaller_a', 'dbinfo');
$texte =
"select nom, prix ".
"from produit ".
"where prix <= ".$prix;
echo "(debug : ".$texte.")
";
$ordre = ociparse($c, $texte);
ociexecute($ordre);
while(ocifetchinto($ordre, $ligne))
echo $ligne[0].",".$ligne[1]."
";
ocilogoff($c);
// comparer structure programme avec ex_mpphp1.php (insert)
// comparer avec structure curseur en PL/SQL
?>
";
$c = ocilogon('c##ewaller_a', 'ewaller_a', 'dbinfo');
$texte="begin :1 := f(".$x."); end;";
// rappel: bloc éphémère PL/SQL finit par ;
// appel de procédure : une seule ligne différente :
// $texte="begin p(".$x.", :1); end;";
echo "(debug : ".$texte.")
";
$ordre = ociparse($c, $texte);
ocibindbyname($ordre, ':1', $z);
ociexecute($ordre);
echo "valeur renvoyée par f : ".$z."
";
// valeur retour est un varchar2 :
// il faut régler taille du buffer d'accueil selon valeur
$s = 'lulu';
$texte="begin q('".$s."',:1); end;";
// rappel : quotes...
echo "(debug : ".$texte.")
";
$ordre=ociparse($c, $texte);
ocibindbyname($ordre, ':1', $z, 100);
// 100 octets ; regler selon taille chaine retour
ociexecute($ordre);
echo "valeur renvoyée par q : ".$z."
";
ocilogoff($c);
?>