note 98017 deleted from function.oci-parse by danbrown
| From: | danbrown@php.net | Date: | Thu, 20 May 2010 17:41:29 +0000 |
| Subject: | note 98017 deleted from function.oci-parse by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-169471@lists.php.net to get a copy of this message | ||
Note Submitter: sandinosaso at gmail dot com
----
A nice function to call an oracle procedure in an Oracle Database.
$usuario: database user
$password: database user password
$nombre_procedure: the procedure name
$parametros: a simple array containing the procedure's parameters
$conexion: a link connection (optional)
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;";
//echo "<br>PROCEDIMIENTO EJECUTADO: $procedure <br>";
$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;
}
//echo "<br>PARAMETRO: $param --- VALOR: $valor<br>";
}
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;";
//echo "<br>PROCEDIMIENTO EJECUTADO: $procedure <br>";
$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;
}
//echo "<br>PARAMETRO: $param --- VALOR: $valor<br>";
}
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);
}