Saltar al contenido

Llamar al procedimiento almacenado de Oracle desde PHP

Nuestros investigadores estrellas han agotado sus depósitos de café, buscando diariamente por la solución, hasta que Julio halló el arreglo en Gitea por lo tanto ahora la compartimos aquí.

Solución:

Para trabajar con un cursor en PHP se requieren tres pasos adicionales, en comparación con acceder a las filas directamente desde un SELECT declaración.

  • El primer paso es preparar un recurso de cursor en PHP usando el oci_new_cursor() función, que luego usa para vincular al parámetro apropiado.
  • El segundo paso es agregar un parámetro en oci_bind_by_name() función
  • El tercer paso, después de haber ejecutado la instrucción SQL habitual, es llamar oci_execute() en el recurso del cursor.

El código:

//Connection does not change
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = JXYX.com)(PORT = 1521)))(CONNECT_DATA=(SID=DHSJKS)))";
$conn = ocilogon("XXXXXX","XXXXXXXX",$db);          

//Request does not change
$sql = 'BEGIN SP_GET_MY_DATA(:POP, :SEG, :DUR, :VIEW, :PAGE, :OUTPUT_CUR); END;';            

//Statement does not change
$stmt = oci_parse($conn,$sql);                     
oci_bind_by_name($stmt,':POP',$pop);           
oci_bind_by_name($stmt,':SEG',$seg);           
oci_bind_by_name($stmt,':DUR',$dur);           
oci_bind_by_name($stmt,':VIEW',$view);           
oci_bind_by_name($stmt,':PAGE',$page);    

//But BEFORE statement, Create your cursor
$cursor = oci_new_cursor($conn)

// On your code add the latest parameter to bind the cursor resource to the Oracle argument
oci_bind_by_name($stmt,":OUTPUT_CUR", $cursor,-1,OCI_B_CURSOR);

// Execute the statement as in your first try
oci_execute($stmt);

// and now, execute the cursor
oci_execute($cursor);

// Use OCIFetchinto in the same way as you would with SELECT
while ($data = oci_fetch_assoc($cursor, OCI_RETURN_LOBS )) 
    print_r($data);

No soy muy fluido con Oracle (y el inglés), así que deberías leer este tutorial. Hay un ejemplo interesante, mira el Procedimientos almacenados y cursores de referencia ¡capítulo!

¡Espero eso ayude!

Al final de todo puedes encontrar las observaciones de otros programadores, tú asimismo eres capaz mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *