Foros del Web » Programando para Internet » PHP »

Llamada a Procedimiento Almacenado Oracle

Estas en el tema de Llamada a Procedimiento Almacenado Oracle en el foro de PHP en Foros del Web. Hola, Tengo la necesidad de llamar a un PA(funcion) Oracle pasandole un parametro y devolviendome esta otros. Por la información que he ido recogiendo parece ...
  #1 (permalink)  
Antiguo 06/12/2005, 03:20
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Llamada a Procedimiento Almacenado Oracle

Hola,

Tengo la necesidad de llamar a un PA(funcion) Oracle pasandole un parametro y devolviendome esta otros. Por la información que he ido recogiendo parece ser que tengo que hacer la llamada como si se tratara de una select normal y corriente pero la verdad es que he hecho pruebas y no me funciona.

Os paso un código aquí simplificado del que me sirvo para lanzar select y recoger valores de la primera fila:

Código PHP:
<?
#Parámetros de conexión
include("includes/db/DB.php");

$query="select * from COMERCIOS where id=loquesea";

if ( 
$oracle->execute_query($query) > )
{
$oracle->db_record_set = array();
if (
ora_fetch_into($oracle->db_cursor$oracle->db_record_setORA_FETCHINTO_NULLS ORA_FETCHINTO_ASSOC))
        {
        
$comercio=$oracle->db_record_set['IDARTICULO'];
        echo 
"Comercio: " $comercio;
        }
}
    
?>
Tengo una función en la BD Oracle que hace exactamente lo mismo y trato de llamarla como si fuera una sentencia SQL y no me es posible.

La función es algo como DAMECOMERCIO con una parametro de entrada y un parametro de salida.

He tratado hacer algo como:

Código PHP:
<?
#Parámetros de conexión
include("includes/db/DB.php");

$id="loquesea";

$query="DAMECOMERCIO(" $id ")";

if ( 
$oracle->execute_query($query) > )
{
$oracle->db_record_set = array();
if (
ora_fetch_into($oracle->db_cursor$oracle->db_record_setORA_FETCHINTO_NULLS ORA_FETCHINTO_ASSOC))
        {
        
$comercio=$oracle->db_record_set['parametro_de_salida'];
        echo 
"Comercio: " $parametro_de_salida;
        }
}
    
?>
Y no me funciona. Tb he probado con exec antes del PA y tampoco.

Ando un poco perdido, ¿me pueden ayudar?

Muchas gracias
__________________
Lailuluelo
El error está en lo obvio
  #2 (permalink)  
Antiguo 06/12/2005, 13:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola,

He encontrado un ejemplo de llamada a PA mediante funciones OCI, y solo puedo hacerlo mediante ORA. Total, que he intentado trasladar el comportamiento de unas funciones a otras y no lo he conseguido.

Por otra parte, un amigo me comenta que no se puede hacer con ORA, ¿es cierto?

Os adjunto código por si me podéis echar un cable, comentadas las funciones en OCI:

Código PHP:
<?php
$usuario
="prueba";
$tns="PROPIO";
$clave="hola";

#$conn = oci_connect($usuario,$clave,$tns) or die;

$conn_str=$usuario '@' $tns;
$conn ora_logon($conn_str,$clave);


$sql 'BEGIN sayHello(:name, :message); END;';

#$stmt = oci_parse($conn,$sql);
$stmt ora_do($conn,$sql);

//  Bind the input parameter
#oci_bind_by_name($stmt,':name',$name,32);
ora_bind($stmt,':name',$name,32);

// Bind the output parameter
#oci_bind_by_name($stmt,':message',$message,32);
ora_bind($stmt,':message',$message,32);

// Assign a value to the input 
$name 'Harry';

#oci_execute($stmt);
ora_exec($stmt);

// $message is now populated with the output value
print "$message\n";
?>
Gracias
__________________
Lailuluelo
El error está en lo obvio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:38.