Error ORA-06502 Oracle y PHP

El problema se presentó usando PHP con Zend Framework 1 y Oracle 11G más detalles a continuación.

Oracle stored procedure:

CREATE OR REPLACE PROCEDURE FGONZALES.GRABA_PRUEBA
(ls_parametro varchar2
 ls_mensaje out varchar2)

Llamando al stored procedure desde PHP:

$param = 'test ';
$mensaje = ''; //O nulo
$params = array(
	'PARAM' => $param,
	'MENSAJE' => &$mensaje,
);

$sql = 'BEGIN 
GRABA_PRUEBA(
	:PARAM,
	:MENSAJE
);
END;'; 
$stmt = $db->prepare($sql);
$stmt->execute($params);

$respuesta = $mensaje;

Con los pasos anteriores obtengo el siguiente error por parte de Oracle:

6502 ORA-06502: PL/SQL: error : 
buffer de cadenas de caracteres demasiado 
pequeño numerico o de valor.

Para este caso ls_mensaje del stored procedure solo puede guardar un caracter, si pasa de uno aparece el error ORA-06502.
Mi solución fue la siguente:

$mensaje = str_repeat(' ', 4000);

Declarar la variable con un máximo tamaño para VARCHAR2 de Oracle.

Leave a Reply

Your email address will not be published. Required fields are marked *

en_USEN