Upload
marlon-espinoza-moran
View
221
Download
0
Embed Size (px)
Citation preview
7/21/2019 Conexión de php con plsql.doc
http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 1/6
Conexión de php con pl/sql
En estos ejemplos se realiza la conexión con el usuario HR, que es el esquema de ejemplo"Human Resources" proporcionado con la base de datos Oracle. Podría ser necesario
desbloquear la cuenta y reiniciar la contrasea antes de poder usarla.
!os ejemplos se conectan a la base de datos XE de su mquina. #ambie la cadena de
conexión a su base de datos antes de ejecutar los ejemplos.
Ejemplo #1 Consulta básica
Este ejemplo muestra la realización de consultas y la $isualización de resultados. !as
sentencias en O#%& usan la secuencia de pasos 'preparación(ejecución(obtención'.
<?php
$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) ! $e = oci_error(); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
// -reparar la sentencia$sti. = oci_parse($conexión, '*EE0& 1 2+3 .epartments');if ($sti.) ! $e = oci_error($conexión); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
// +eali4ar la ló"ica .e la cons5lta
$r = oci_exec5te($sti.);if ($r) ! $e = oci_error($sti.); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
// 6tener los res5lta.os .e la cons5ltaprint 7<ta6le 6or.er='8'9:n7;while ($fila = oci_fetch_arra($sti., 0_**0>0_+E&+%_%*)) ! print 7<tr9:n7; foreach ($fila as $elemento) ! print 7 <t.97 ($elemento == n5ll ? htmlentities($elemento,E%&_&E*) @ 77) 7</t.9:n7;
print 7</tr9:n7;print 7</ta6le9:n7;
oci_free_statement($sti.);oci_close($conexión);
?9
7/21/2019 Conexión de php con plsql.doc
http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 2/6
Ejemplo #2 Inserción con variables vinculadas
!as $ariables $inculadas mejoran el rendimiento permitiendo la reutilización de contextos
ejecutados y cac)*s. !as $ariables $inculadas mejoran la se+uridad pre$iniendo al+unostipos de problemas de %nyecciones -!.
<?php
// ntes .e eAec5tarlo, cree la ta6la@// 0+E&E &BE 3C&BE (mi. %3BE+, m. D+0+F(FG));
$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) ! $e = oci_error(); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
$sti. = oci_parse($conexión, '%*E+& %& 3C&BE (mi., m.) DE*(@mi., @m.ata)');
$i. = HG;$.atos = 'l"5nos .atos';
oci_6in._6_name($sti., '@mi.', $i.);oci_6in._6_name($sti., '@m.ata', $.atos);
$r = oci_exec5te($sti.); // eAec5ta consi"na
if ($r) ! print 7na fila inserta.a7;
oci_free_statement($sti.);oci_close($conexión);
?9
Ejemplo #3 incular la cláusula !"EE a una consulta
!o si+uiente muestra una $inculación escalar nica.
<?php
$conn = oci_connect(7hr7, 7hrpw.7, 7localhost/XE7);if ($conn) ! $m = oci_error(); tri""er_error(htmlentities($m#'messa"e'), E_*E+_E+++);
$sIl = '*EE0& last_name 2+3 emploees JE+E .epartment_i. = @.i.6K +LE+ BC last_name';$sti. = oci_parse($conn, $sIl);$.i.6K = HG;oci_6in._6_name($sti., '@.i.6K', $.i.6K);
7/21/2019 Conexión de php con plsql.doc
http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 3/6
oci_exec5te($sti.);while (($row = oci_fetch_arra($sti., 0_**0)) = false) ! echo $row#'*&_%3E' 7<6r9:n7;
// a sali.a es// 5stin
// Ernst// 5nol.// orent4// -ata6alla
oci_free_statement($sti.);oci_close($conn);
?9
Ejemplo #$ Insertar datos en una columna C%&'
Para datos +randes use los tipos objeto +rande binario /0!O01 u objeto +rande decaracteres /#!O01. Este ejemplo usa #!O0.
<?php
// ntes .e eAec5tarlo, cree la ta6la@// 0+E&E &BE 3C&BE (mMe %3BE+, mclo6 0B);
$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) ! $e = oci_error(); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
$mMe = 8FNON; // claKe ar6itraria para este eAemplo;
$sIl = 7%*E+& %& mta6le (mMe, mclo6) DE* (@mMe, E3-&C_0B()) +E&+%%P mclo6 %& @mclo67;
$sti. = oci_parse($conexión, $sIl);$clo6 = oci_new_.escriptor($conexión, 0_L_B);oci_6in._6_name($sti., 7@mMe7, $mMe, Q);oci_6in._6_name($sti., 7@mclo67, $clo6, R8, 0_B_0B);oci_exec5te($sti., 0_%_&_033&); // 5tilice 0_LE2& para -- <= QN8$clo6R9saKe(7na ca.ena m5 "ran.e7);
oci_commit($conexión);
// 6tener los .atos 0B
$cons5lta = '*EE0& mclo6 2+3 mta6le JE+E mMe = @mMe';
$sti. = oci_parse ($conexión, $cons5lta);oci_6in._6_name($sti., 7@mMe7, $mMe, Q);
7/21/2019 Conexión de php con plsql.doc
http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 4/6
oci_exec5te($sti.);
print '<ta6le 6or.er=7879';while ($row = oci_fetch_arra($sti., 0_**0>0_+E&+%_B*)) ! print '<tr9<t.9'$row#'3C0B''</t.9</tr9'; // En 5n 65cle, li6erar la Karia6le "ran.e antes .e la FS o6tención re.5ce el 5so .e memoria .e picos .e --
5nset($row);print '</ta6le9';
?9
Ejemplo #( )sar una *unción almacenada de +%/,-%
e debe $incular una $ariable para el $alor de retorno y, opcionalmente, para cualquier
ar+umento de la 2unción de P!3-!.
<?php
/1 ntes .e eAec5tar el pro"rama .e --, cree 5na f5nción almacena.a en *1-l5s o * LeKeloper@
0+E&E + +E-0E 2%0&% mf5nc(p % %3BE+) +E&+% %3BE+ * BEP% +E&+% p 1 N; E%L;
1/
$conexión = oci_connect('hr', 'welcome', 'localhost/XE');
if ($conexión) ! $e = oci_error(); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
$p = T;
$sti. = oci_parse($conexión, '6e"in @r @= mf5nc(@p); en.;');oci_6in._6_name($sti., '@p', $p);oci_6in._6_name($sti., '@r', $r, OG);
oci_exec5te($sti.);
print 7$r:n7; // imprime FO
oci_free_statement($sti.);oci_close($conexión);
?9
Ejemplo #. )tiliar un procedimiento almacenado de +%/,-%
7/21/2019 Conexión de php con plsql.doc
http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 5/6
#on los procedimientos almacenados se deberían $incular $ariables para cualquier
ar+umento.
<?php
/1
ntes .e eAec5tar el pro"rama .e --, cree 5n proce.imiento almacena.oen *1-l5s or * LeKeloper@
0+E&E + +E-0E -+0EL+E mproc(p8 % %3BE+, pF & %3BE+) * BEP% pF @= p8 1 F; E%L;
1/
$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) ! $e = oci_error(); tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);
$p8 = T;
$sti. = oci_parse($conexión, '6e"in mproc(@p8, @pF); en.;');oci_6in._6_name($sti., '@p8', $p8);oci_6in._6_name($sti., '@pF', $pF, OG);
oci_exec5te($sti.);
print 7$pF:n7; // imprime 8H
oci_free_statement($sti.);oci_close($conexión);
?9
Ejemplo #0 %lamar a una *unción de +%/,-% que devuelve un REF CURSOR
#ada $alor de$uelto por la consulta es un REF CURSOR desde el que se pueden obtener
datos.
<?php/1
0ree 5na f5nción almacena.a .e -/* como@
0+E&E + +E-0E 2%0&% mf5nc(p8 % %3BE+) +E&+% *C*_+E20+*+ * rc *C*_+E20+*+; BEP% -E% rc 2+ *EE0& cit 2+3 locations JE+E +J%3 < p8; +E&+% rc; E%L;1/
7/21/2019 Conexión de php con plsql.doc
http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 6/6
$conexión = oci_connect('hr', 'welcome', 'localhost/XE');
$sti. = oci_parse($conexión, '*EE0& mf5nc(Q) * mfrc 2+3 .5al');oci_exec5te($sti.);
echo 7<ta6le 6or.er='8'9:n7;while (($fila = oci_fetch_arra($sti., 0_**0))) !
echo 7<tr9:n7; $rc = $fila#'32+0'; oci_exec5te($rc); // el Kalor .e la col5mna .eK5elta por la cons5ltaes 5n ref c5rsor while (($fila_rc = oci_fetch_arra($rc, 0_**0))) !
echo 7 <t.97 $fila_rc#'0&C' 7</t.9:n7; oci_free_statement($rc); echo 7</tr9:n7;echo 7</ta6le9:n7;
// a sali.a es@
// BeiAin"// Bern// Bom6a// PeneKa
oci_free_statement($sti.);oci_close($conexión);
?9