[Oracle&PHP] Execution de procedures stockees -> à voir !

Execution de procedures stockees -> à voir ! [Oracle&PHP] - SQL/NoSQL - Programmation

Marsh Posté le 17-04-2003 à 16:52:10    

Encore mon oracle, mon php et moi   :pt1cable:  
 
Je cherche a encapsuler mes procedure stockees oracle dans des fonctions php pour plus de securité et de facilité (sisi).
 
Par contre je suis desolé, je ne vais pas donner une superbe explication comme a l accoutumée car je suis fatigué  :sleep:  
 
A la place voici du code  :D  
 

Code :
  1. $stmt = OCIParse($connection,"execute AJOUTER_UTILISATEUR(:login, :mdp, :nom_reseau, :ip, :nom, :prenom, :tel, :email, :puce)" ) ;
  2.  OCIBindByName($stmt, ":login", &$login, -1);
  3.  OCIBindByName($stmt, ":mdp", &$mdp, -1);
  4.  OCIBindByName($stmt, ":nom_reseau", &$nom_reseau, -1);
  5.  OCIBindByName($stmt, ":ip", &$ip, -1);
  6.  OCIBindByName($stmt, ":nom", &$nom, -1);
  7.  OCIBindByName($stmt, ":prenom", &$prenom, -1);
  8.  OCIBindByName($stmt, ":tel", &$tel, -1);
  9.  OCIBindByName($stmt, ":email", &$email, -1);
  10.  OCIBindByName($stmt, ":puce", &$puce, -1);
  11.  OCIExecute($stmt);


 
Info qd meme : si j'affiche la requete parsée, que je la copie dans sqlplus, evidement ca marche :), spa drole sinon  :cry:  
 
Pour les inquiets, avant d essayer via ocibindbyname j'ai procédé a l'ancienne et j ai toujours un message d'erreur qui est :  
 

Code :
  1. Warning: OCIStmtExecute: ORA-00900: Instruction SQL non valide in U:\Informatique\molines\portail\setup\index.php on line 14


 
la doc concernant ce message :  
 

Code :
  1. ORA-00900 invalid SQL statement
  2. Cause: The statement is not recognized as a valid SQL statement. This error can occur if the Procedural Option is not installed and a SQL statement is issued that requires this option (for example, a CREATE PROCEDURE statement). You can determine if the Procedural Option is installed by starting SQL*Plus. If the PL/SQL banner is not displayed, then the option is not installed.
  3. Action: Correct the syntax or install the Procedural Option.


Message édité par Masure le 17-04-2003 à 17:15:07
Reply

Marsh Posté le 17-04-2003 à 16:52:10   

Reply

Marsh Posté le 17-04-2003 à 17:13:06    

Bon apres une apres midi j'ai trouve  :fou:, je vais donc vous livrer le secret, car c'est assez tordu.
 
Normalement sous sqlplus on tape :
 

Code :
  1. execute NOM_PROCEDURE (parametres);


 
donc logiquement si on veut faire ca via php on fait un :
 

Code :
  1. ociParse ($conn, "execute NOM_PROCEDURE (parametres);" )


 
Mais non... c'est trop cher apparament. Meme en essayant toutes les variantes de cette forme : A MARCH'PAS
 
LA SOLUTION
 

Code :
  1. ociParse ($conn, "begin NOM_PROCEDURE (parametres); end ;" )


 
 [:yaisse2]


Message édité par Masure le 17-04-2003 à 17:13:52
Reply

Marsh Posté le 18-04-2003 à 12:01:47    

masure a écrit :

Bon apres une apres midi j'ai trouve  :fou:, je vais donc vous livrer le secret, car c'est assez tordu.
 
Normalement sous sqlplus on tape :
 

Code :
  1. execute NOM_PROCEDURE (parametres);


 
donc logiquement si on veut faire ca via php on fait un :
 

Code :
  1. ociParse ($conn, "execute NOM_PROCEDURE (parametres);" )


 
Mais non... c'est trop cher apparament. Meme en essayant toutes les variantes de cette forme : A MARCH'PAS
 
LA SOLUTION
 

Code :
  1. ociParse ($conn, "begin NOM_PROCEDURE (parametres); end ;" )


 
 [:yaisse2]


C'est pourquoi il faut utilser TOAD plutot que SQL*PLUS, car ainsi tu aurai trouver en 1/2 minutes ...  [:spamafote]


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 18-04-2003 à 12:21:39    

tomlameche a écrit :


C'est pourquoi il faut utilser TOAD plutot que SQL*PLUS, car ainsi tu aurai trouver en 1/2 minutes ...  [:spamafote]  


 
Bah moi je connais pas :/

Reply

Marsh Posté le 18-04-2003 à 13:11:36    

masure a écrit :


 
Bah moi je connais pas :/


Voir ici : http://www.toadsoft.com
Avec TOAD, pour lancer une procédure stocké, il faut justement faire
begin
nom_prc ( parametre);
end;
Et le execute n'est pas reconnu. Par contre, je sais pas pourquoi   :D


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 18-04-2003 à 13:47:12    

tomlameche a écrit :


Voir ici : http://www.toadsoft.com
Avec TOAD, pour lancer une procédure stocké, il faut justement faire
begin
nom_prc ( parametre);
end;
Et le execute n'est pas reconnu. Par contre, je sais pas pourquoi   :D  


 
Ah ben alors cme change rien... je fais pareil.
 
Sinon tant que je te tiens, un truc que j'arrive pas a faire c'est executer le contenu d'un .sql via ociParse de PHP. J'ai essayé le @, le start et le @@ mais aucun ne passe alors que sous sqlplus ca marche.

Reply

Marsh Posté le 18-04-2003 à 14:46:28    

masure a écrit :


 
Ah ben alors cme change rien... je fais pareil.
 
Sinon tant que je te tiens, un truc que j'arrive pas a faire c'est executer le contenu d'un .sql via ociParse de PHP. J'ai essayé le @, le start et le @@ mais aucun ne passe alors que sous sqlplus ca marche.


Le problème, c'est qu'avec ociParse, tu ne peux qu'exécuter des commandes SQL standard, et la lecture d'un fichier .sql ne doit pas en faire partie.
Je cherche deux minutes, et je repost un truc si je trouve une solution.


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 18-04-2003 à 16:20:39    

C'est que j'ai cru comprendre apres mes nombreux essais, ociparse valide du code sql. Moi j'essaie d'y faire executer des commandes sqlplus.
 
J'ai bien fait une fonction qui eclate un fichier sql en commandes sql simples mais j'aime pas cette methode...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed