Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ayuda ORACLE PL SQL

Estas en el tema de Ayuda ORACLE PL SQL en el foro de Oracle en Foros del Web. Saludos a todos. Se me està presentando el siguiente inonveniente al llamar al archivo PHP que a continuciòn les adjunto. Estoy tratando de llamar a ...
  #1 (permalink)  
Antiguo 13/05/2008, 10:41
 
Fecha de Ingreso: agosto-2007
Mensajes: 12
Antigüedad: 16 años, 8 meses
Puntos: 0
Ayuda ORACLE PL SQL

Saludos a todos.

Se me està presentando el siguiente inonveniente al llamar al archivo PHP que a continuciòn les adjunto. Estoy tratando de llamar a un procedimiento almacenado PL-SQL. y obtengo el siguiente error en el log de apache:

PHP Warning: ociexecute() [<a href='function.ociexecute'>function.ociexecute</a>]: ORA-06550: línea 1, columna 7:
PLS-00306: número o tipos de argumentos erróneos al llamar a 'QUERY$CURSOR'
ORA-06550: línea 1, columna 7:
PL/SQL: Statement ignored in C:\Archivos de programa\Zend\Apache2\htdocs\pruebaArrays.php on line 20

LE AGRADECERIA ENORMEMENTE A QUIEN PUDIERA AYUDARME A RESOLVER MI SITUACION


---------------------------- PHP CODE ----------------------------------------
<?
try
{
$conn = oci_connect("carlos","tesis","XE");
$sql="BEGIN PACK\$PERSONA.QUERY\$CURSOR(:c,:o,:v,:cursor); END;";

echo($sql);
$c = array('ID');
$o = array('=');
$v = array('1');

$sqlParsed = OCIParse($conn,$sql);

oci_bind_array_by_name($sqlParsed, "c", $c,1, -1, SQLT_CHR);
oci_bind_array_by_name($sqlParsed, "o", $o,1, -1, SQLT_CHR);
oci_bind_array_by_name($sqlParsed, "v", $v,1, -1, SQLT_CHR);

$cursor = ocinewcursor($conn);
ocibindbyname($sqlParsed,'cursor', $cursor, -1, OCI_B_CURSOR);
$s=OCIExecute($sqlParsed) or die("No se pudo ejecutar );
ociexecute($cursor);
//echo("qury ".$query);
while (OCIFetch($cursor))
{
for($i=0;$i<14;$i++){
echo(OCIResult($cursor,$i)."<br>");
}
}

OCILogOff($conn);
}catch(Exception $e)
{
echo("Ocurri un error en query.php->queryCursor ");
}
?>

------------------------ FIN PHP CODE ----------------------------------------

------------------------- PROCEDIMIENTO PL AL QUE ESTOY LLAMANDO el cual se encuentra en el paquete PACK\$PERSONA ----------
type rtyWCondition is record(vchColumn varchar2(30),
vchOperator varchar2(6),
vchValue varchar2(200));
type gttyWCondition is table of rtyWCondition index by binary_integer;

procedure Query$Cursor(
parTblCondicion in gttyWCondition,
parCursor out typCursor)
is
vchQuery varchar2(1024);
vchColumns varchar2(512);
begin
vchQuery := 'select * '
|| ' from CORE$PERSONA '
|| construirCondicion(parTblCondicion);
open parCursor FOR vchQuery;
return;

end Query$Cursor;
  #2 (permalink)  
Antiguo 13/05/2008, 15:13
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: Ayuda ORACLE PL SQL

no conosco muy bien php pero creo que

PLS-00306: número o tipos de argumentos erróneos al llamar a 'QUERY$CURSOR'

veo una llamada con 4 parametros

$sql="BEGIN PACK\$PERSONA.QUERY\$CURSOR(:c,:o,:v,:cursor); END;";

veo un procedure con 2 parametros

procedure Query$Cursor(
parTblCondicion in gttyWCondition,
parCursor out typCursor)
is
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 14/05/2008, 00:57
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Re: Ayuda ORACLE PL SQL

La gente debería fijarse primero en el ORA-XXXXX que sale, interpretarlo y obrar en consecuencia.

Aquí no tiene nada que ver el PHP ni ná de ná. Como bien dice kikolice tienes un procedure que recibe 4 parametros y le mandas 2...
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 00:50.