note 96517 added to function.oci-execute
| From: | sandinosaso at gmail dot com | Date: | Wed, 03 Mar 2010 13:29:05 +0000 |
| Subject: | note 96517 added to function.oci-execute | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-166557@lists.php.net to get a copy of this message | ||
/********************************************************************
Autor: Sandino Nuñez
Fecha: 16/03/2009
Descripción:
Ejecuta un Stored Procedure de la base Oracle
En $nombre_procedure se escribe el nombre del procedimiento:
ej: "nombre_paquete.nombre_procedimiento"
y en $parametros se pasa un array con los valores
de los parametros que le deseamos pasar al procedure.
Si se ejecuta con exito $error vale FALSE de lo contrario vale TRUE
*********************************************************************/
function ejecutarProcedure ($usuario, $password, $nombre_procedure, $parametros, $conexion = FALSE)
{
$any_error = FALSE;
$msg_error = '';
$error = '';
if (!$conexion){
$conexion = ocilogon($usuario, generarPass($usuario, $password), BD);
if (!$conexion) {
$msg_error = 'El usuario o la contraseña es incorrecto.';
$any_error = TRUE;
}else{
$procedure= "BEGIN " . $nombre_procedure . "(";
for($i=1; $i <= count($parametros); $i++){
$procedure .= ":param" . $i;
if ($i < count($parametros))
$procedure .= ", ";
}
$procedure .= ");END;";
$id_sentencia = ociparse($conexion, $procedure);
if (!$id_sentencia) {
$error = oci_error($conexion);
$msg_error = 'Error al procesar la modificación';
$any_error = TRUE;
}
if (!$any_error){
for($i=1; $i <= count($parametros); $i++){
$valor = $parametros[$i];
$nombre="var".$i;
$$nombre=$valor;
$param = ":param".$i;
if (!ocibindbyname($id_sentencia, $param, $$nombre, 256)){
$any_error = TRUE;
$msg_erroy = 'Error al hacer bin';
break;
}
}
if (!$any_error){
$resultado = ociexecute($id_sentencia);
if (!$resultado) {
$error = oci_error($id_sentencia);
$msg_error = 'Error al realizar la modificación';
$any_error = TRUE;
}
}
}
ocilogoff($conexion);
}
}else{
$procedure= "BEGIN " . $nombre_procedure . "(";
for($i=1; $i <= count($parametros); $i++){
$procedure .= ":param" . $i;
if ($i < count($parametros))
$procedure .= ", ";
}
$procedure .= ");END;";
$id_sentencia = ociparse($conexion, $procedure);
if (!$id_sentencia) {
$error = oci_error($conexion);
$msg_error = 'Error al procesar la modificación';
$any_error = TRUE;
}
if (!$any_error){
for($i=1; $i <= count($parametros); $i++){
$valor = $parametros[$i];
$nombre="var".$i;
$$nombre=$valor;
$param = ":param".$i;
if (!ocibindbyname($id_sentencia, $param, $$nombre, 256)){
$any_error = TRUE;
$msg_erroy = 'Error al hacer bin';
break;
}
}
if (!$any_error){
$resultado = ociexecute($id_sentencia);
if (!$resultado) {
$error = oci_error($id_sentencia);
$msg_error = 'Error al realizar la modificación';
$any_error = TRUE;
}
}
}
}
return array ($any_error, $msg_error);
}
Ejemplo De uso: En una base Oracle con un paquete llamado paqueteprueba y un stored procedure
llamado carga se invocaria asi:
list ($any_error,$msg_error) = ejecutarProcedure ($usuario_base, $pass_usuario,
"paqueteprueba.carga", $parametros);
Nota: $usuario_base y $pass_usuario es un usuario valido de la base con permiso para ejecutar el
paquete elecciones y el procedure carga
----
Server IP: 69.147.83.197
Probable Submitter: 164.73.129.140
----
Manual Page -- http://www.php.net/manual/en/function.oci-execute.php
Edit -- https://master.php.net/note/edit/96517
Del: integrated -- https://master.php.net/note/delete/96517/integrated
Del: useless -- https://master.php.net/note/delete/96517/useless
Del: bad code -- https://master.php.net/note/delete/96517/bad+code
Del: spam -- https://master.php.net/note/delete/96517/spam
Del: non-english -- https://master.php.net/note/delete/96517/non-english
Del: in docs -- https://master.php.net/note/delete/96517/in+docs
Del: other reasons-- https://master.php.net/note/delete/96517
Reject -- https://master.php.net/note/reject/96517
Search -- https://master.php.net/manage/user-notes.php