Exécuter un script PL/SQL à partir d'une page PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Exécuter un script PL/SQL à partir d'une page PHP

Re: Exécuter un script PL/SQL à partir d'une page PHP

par zeus » 19 mars 2013, 18:02

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.

Re: Exécuter un script PL/SQL à partir d'une page PHP

par moogli » 18 mars 2013, 21:52

heu c'est pourtant simple tu avait tous ce qu'il te fallait, sauf le file_get_contents :)

<?php
$query = file_get_contents('./file.sql');
$parse = ociparse($query);
ociexecute($parse);
il faut bien sur que le fichier ai les bons droits pour que php puisse l'utiliser ;)


@+

Re: Exécuter un script PL/SQL à partir d'une page PHP

par Nanard » 14 mars 2013, 17:34

Bon, j'ai vu, j'ai lu mais j'ai pas vaincu ! Alors j'ai utilisé une méthode de salaud mais... qui fonctionne.
J'ai déclaré une variable $query dans laquelle j'ai inséré chaque ligne avec des concaténations.

Oui, je sais, pas la peine d'en rajouter, j'ai assez honte comme ça...
$query = "Declare ".
"total2 number NOT NULL DEFAULT 0;".
"NB number NOT NULL DEFAULT 0;".
"LEVEL number NOT NULL DEFAULT 0;".
"CURSOR F_PACK IS SELECT * FROM SAP_PACKAGES WHERE PACKAGE_TYPE = 'HF' ORDER BY PACKAGE_ID ASC ;".
"Begin ".
"SELECT MAX(PACKAGE_LEVEL) INTO LEVEL FROM SAP_PACKAGES ;".
"loop ".
	"For F in F_PACK loop ".
		"SELECT COUNT(*) INTO NB FROM SAP_PACKAGES WHERE PACKAGE_PARENT_ID = F.PACKAGE_ID ;".
		"If NB = 0 then ".
			"DELETE FROM SAP_PACKAGES WHERE PACKAGE_ID = F.PACKAGE_ID ;".
			"total2 := total2 +1 ;".
		"end if ;".
	"end loop ;".
	"LEVEL := LEVEL - 1;".
	"exit when LEVEL = 0 ;".
"end loop ;".
"DBMS_OUTPUT.PUT_LINE(total2 || ' suppression(s) ');".
"end ;";

Re: Exécuter un script PL/SQL à partir d'une page PHP

par moogli » 14 mars 2013, 00:25

salut,


Tu ne peux pas exécuter un fichier comme ça (c'est pas de l’exécutable ;) ).

c'est relativement simple, commence par récupérer le contenue du fichier fil_get_contents

ensuite une simple requête classique comme tu le ferais dans pl/dev ou sql developer (donc avec le begin / declare).

si c'est la déclaration de la procédure, c'est la même chose :)


je t'invite à regarder du coté l'extension PDO plutot que l'extension oci.
si tu reste sur oci utilise au moins les noms de fonctions à jour les tiens sont dépréciés (par exemple oci_parse plutôt que ociparse). Voir la doc php pour plus d'info ;)

@+

Exécuter un script PL/SQL à partir d'une page PHP

par Nanard » 13 mars 2013, 19:21

Bonjour,

Je cherche le moyen d'appeler un fichier contenant une procédure PL/SQL et de l'éxécuter à partir de PHP.
Je précise que je travaille sur une base ORACLE en utilisant le connecteur OCI.

Quelque chose du style :
$query = "./file.sql";
$parse = ociparse($query);
ociexecute($parse);
Comment faire ?

Merci par avance.