FUNCIONES ORACLE EN PHP
Publicado: Jue May 06, 2004 2:01 pm
Saludos a todos. Tengo un problema para ejecutar procedimientos pl/sql desde php a Oracle. La compilación me la hace bien, pero al intentar ejecutar (con la sentencia "exec") me dice que no es una sentencia sql válida. Os muestro el fichero que estoy ejecutando (info2.php):
<?php
$db_t1 = ora_Logon("scott@bdmodel", "tiger");
function create_table($conn)
{ $tabla = ora_open($conn);
$stmt = ora_parse($tabla,"create table scott.grupo (ID VARCHAR2(20) NOT NULL,Cod_grupo VARCHAR2(20) NULL,
Nombre_grupo VARCHAR2(20) NULL,CONSTRAINT XPKGRUPO PRIMARY KEY (ID))",$hola);
if($stmt == '0') {
echo " <h4>La tabla no ha podido ser creada</h4>\n\n";
}
else {
ora_exec($tabla);
echo " <h4>La tabla GRUPO ha sido creada</h4>\n\n";
}
}
function drop_table($conn)
{ $drop_t = ora_open($conn);
$stmt = ora_parse($drop_t,"drop table scott.grupo",$adios);
ora_exec($drop_t);
echo " <h4>La tabla GRUPO ha sido eliminada</h4>\n\n";
}
function crear_procedure($conn)
{
$cursor = ora_open ($conn);
$stmt = ora_parse($cursor,"CREATE OR REPLACE PROCEDURE scott.crear_usuario IS
BEGIN
INSERT INTO scott.grupo VALUES ('003','6','6');
END scott.crear_usuario;
/ ",$adios);
ora_exec($cursor);
echo " <h4>El procedimiento ha sido creado</h4>\n\n";
}
function ejecutar_procedure($conn)
{
$ex = ora_open ($conn);
$stmt = ora_parse($ex,"exec crear_usuario('I04')",$adios);
ora_exec($ex);
echo " <h4>El procedimiento ha sido ejecutado</h4>\n\n";
}
function drop_procedure($conn)
{ $drop_p = ora_open($conn);
$stmt = ora_parse($drop_p,"drop procedure scott.crear_usuario",$hola);
ora_exec($drop_p);
echo " <h4>El procedimiento crear_usuario ha sido eliminado</h4>\n\n";
}
create_table($db_t1);
crear_procedure($db_t1);
ejecutar_procedure($db_t1);
drop_table($db_t1);
drop_procedure($db_t1);
?>
Y la respuesta que me sale en el navegador:
La tabla GRUPO ha sido creada
El procedimiento ha sido creado
Warning: Ora_Parse failed (ORA-00900: sentencia SQL no válida -- while processing OCI function OPARSE) in C:\Archivos de programa\Apache Group\Apache\htdocs\aux2.php on line 55
Warning: Ora_Exec failed (ORA-01003: ninguna sentencia analizada -- while processing OCI function OEXEC/OEXN) in C:\Archivos de programa\Apache Group\Apache\htdocs\aux2.php on line 56
El procedimiento ha sido ejecutado
La tabla GRUPO ha sido eliminada
El procedimiento crear_usuario ha sido eliminado
La verdad es que no lo entiendo, puesto que "exec" es la forma de ejecutar procedimientos en pl/sql. ¿Alguien sabe que me esta pasando?.
Muchas gracias a todos.
Saludos. de Posix.
<?php
$db_t1 = ora_Logon("scott@bdmodel", "tiger");
function create_table($conn)
{ $tabla = ora_open($conn);
$stmt = ora_parse($tabla,"create table scott.grupo (ID VARCHAR2(20) NOT NULL,Cod_grupo VARCHAR2(20) NULL,
Nombre_grupo VARCHAR2(20) NULL,CONSTRAINT XPKGRUPO PRIMARY KEY (ID))",$hola);
if($stmt == '0') {
echo " <h4>La tabla no ha podido ser creada</h4>\n\n";
}
else {
ora_exec($tabla);
echo " <h4>La tabla GRUPO ha sido creada</h4>\n\n";
}
}
function drop_table($conn)
{ $drop_t = ora_open($conn);
$stmt = ora_parse($drop_t,"drop table scott.grupo",$adios);
ora_exec($drop_t);
echo " <h4>La tabla GRUPO ha sido eliminada</h4>\n\n";
}
function crear_procedure($conn)
{
$cursor = ora_open ($conn);
$stmt = ora_parse($cursor,"CREATE OR REPLACE PROCEDURE scott.crear_usuario IS
BEGIN
INSERT INTO scott.grupo VALUES ('003','6','6');
END scott.crear_usuario;
/ ",$adios);
ora_exec($cursor);
echo " <h4>El procedimiento ha sido creado</h4>\n\n";
}
function ejecutar_procedure($conn)
{
$ex = ora_open ($conn);
$stmt = ora_parse($ex,"exec crear_usuario('I04')",$adios);
ora_exec($ex);
echo " <h4>El procedimiento ha sido ejecutado</h4>\n\n";
}
function drop_procedure($conn)
{ $drop_p = ora_open($conn);
$stmt = ora_parse($drop_p,"drop procedure scott.crear_usuario",$hola);
ora_exec($drop_p);
echo " <h4>El procedimiento crear_usuario ha sido eliminado</h4>\n\n";
}
create_table($db_t1);
crear_procedure($db_t1);
ejecutar_procedure($db_t1);
drop_table($db_t1);
drop_procedure($db_t1);
?>
Y la respuesta que me sale en el navegador:
La tabla GRUPO ha sido creada
El procedimiento ha sido creado
Warning: Ora_Parse failed (ORA-00900: sentencia SQL no válida -- while processing OCI function OPARSE) in C:\Archivos de programa\Apache Group\Apache\htdocs\aux2.php on line 55
Warning: Ora_Exec failed (ORA-01003: ninguna sentencia analizada -- while processing OCI function OEXEC/OEXN) in C:\Archivos de programa\Apache Group\Apache\htdocs\aux2.php on line 56
El procedimiento ha sido ejecutado
La tabla GRUPO ha sido eliminada
El procedimiento crear_usuario ha sido eliminado
La verdad es que no lo entiendo, puesto que "exec" es la forma de ejecutar procedimientos en pl/sql. ¿Alguien sabe que me esta pasando?.
Muchas gracias a todos.
Saludos. de Posix.