Procédure stocké SQL et curseur

Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
-
Salut à tous,

Je lutte un et ne trouve pas les infos que je cherche pour récupérer les résultats d'une procédure de package stocké sur une bdd sql oracle depuis php.

Ma package:
create or replace PACKAGE        gnsaggr AS
   TYPE CurType IS REF CURSOR;
   PROCEDURE get_gns_aggr_PID (strPID_ CH_AGREGATE.CA_PD_PIECE_ID%TYPE, globcursor_ OUT CurType);
END gnsaggr;

create or replace PACKAGE BODY gnsaggr AS
 PROCEDURE get_gns_aggr_PID (strPID_ CH_AGREGATE.CA_PD_PIECE_ID%TYPE, globcursor_ OUT CurType) IS
  BEGIN
   OPEN globcursor_ FOR
    select distinct PD_CH_ID,SH_CH_ID,CA_PD_AWB_NO,CA_PD_PIECE_ID
    from    CH_AGREGATE AG
    where AG.CA_PD_PIECE_ID = strPID_ ;
  END get_gns_aggr_PID;


A noter que le choix de package est de mon point de vue débile (n apporte rien, un fonction aurait été bien mieux .. bref) mais je peux rien y faire .


Le but est donc d'appeler depuis php mais .... je ne trouve pas comment. J'ai tenté ceci:

 
$Request="exec gnsaggr.get_gns_aggr_PID('".substr($sValue,1)."', @status)";
$SQL->exec($Request);
$arrRes=$SQL->dbh->query("SELECT @status AS status") or die(print_r($SQL->dbh->errorInfo(), true));
var_dump($arrRes);


(aussi avec call à la place d exec, bref)

ou encore

   $Request="begin gnsaggr.get_gns_aggr_PID('".substr($sValue,1)."', @status);end;";
   var_dump($SQL->query($Request));



bref plein de choses (là ce ne sont que mes derniers essais) mais je n arrive pas à me debloquer.

Je continue de chercher mais si quelqu un à un idée je suis preneur!

merci d avance

naga


PS: la connexion fonctionne très bien, si je joues la requetes directement c est bon :

$Request="select distinct AG.PD_CH_ID,AG.SH_CH_ID,AG.CA_PD_AWB_NO,AG.CA_PD_PIECE_ID from CH_AGREGATE AG where AG.CA_PD_PIECE_ID = '".substr($sValue,1)."'";

var_dump($SQL->query($Request));




PS2 $value est une chaine de caractère
Afficher la suite