Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2011, 09:47
agrandez
 
Fecha de Ingreso: febrero-2011
Ubicación: Lima
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta problemas con un SP [PHP y Sql Server]

Buenos Días:
Soy nuevo en este foro y agradezo la posible ayuda que me puedan brindar
Estoy trabajando con PHP 5.2.3 y con Sql Server 2008 y me ha surgido un problema trabajando con Stored Procedures.

El SP que estoy tratando de correr es de una duración mínima de 5 minutos. Por lo que uso el set_time_limit() e incluso configuré
el php.ini (max_time_execution) para que el tiempo no sea un problema. Sin embargo cuando se ejecuta el SP se obtiene un warning:

-Warning: mssql_execute() [function.mssql-execute]: Stored Procedure failed

y no me muestra ningun mensaje de error. El SP sigue ejecutándose y termina de manera correcta pero la pagina web me muestra
el warning (que ya lo oculté). Ese es el primer problema. Parece como si hubiera algun otro parámetro en el php.ini para modificar,
no sé cual será la razón.

Y luego para saber si el SP finalizó consulto a una tabla control_procesos cuyo flag se vuelve uno cuando el SP terminó.
Pero al momento de ejecutar me sale otro warning:

[COLOR="rgb(139, 0, 0)"]Warning: mssql_query() [function.mssql-query]: Unable to set query in[/COLOR]

y no se por que me lo muestra.. cuando ejecuto unj SP de corta duración no se produce ningún warning ni error y funciona como quiero
pero cuando lo hago con Sp de 5 o 6 minutos pasa eso. Y no sé cual pueda ser el error pero da la impresión que el segundo arrastra
algún error desde el primero y ni siquiera puedo ejecutar el query.. lo puse en pantalla y el query si está correcto


Muestro el código a continuación


// principal.php
executeSP($nombreSP);
spFinalizado($pCodProceso,$pDiaria);

public function executeSP($nombreSP){

$sp = $this->link->iniciaSP($nombreSP);
$result2 = @$this->link->ejecutaSP($sp);
if(!$result2)
{
//die('error sp MSQL error: '. mssql_get_last_message());
echo "se corto la conexion - warning: el SP puede seguir corriendo";
}
else {
echo "SP corrio exitosamente ";
}
$this->link->limpiaRS();
}

public function spFinalizado($pCodProceso,$pFecha){

$this->link->limpiaRS();
$queryString= "SELECT flag FROM control_procesos
WHERE fecha='$pFecha' and Cod_Pro='$pCodProceso'";
$result3 = $this->link->ejecutar($queryString);

if(!$result3) {
die('MSSQL error: ' . mssql_get_last_message());}

unset($this->flag);
$row = $this->link->obtener_fila($result3,0);
$this->flag= $row['flag'];
return $this->flag;

}

//conexion.php

public function ejecutaSP($sp)
{ $this->sp = $sp;
set_time_limit(0);
$this->stmt = mssql_execute($this->sp);
return $this->stmt;
}

public function iniciaSP($nombreSP)
{ $this->sp = mssql_init($nombreSP,$this->link);
return $this->sp;
}

public function limpiaRS()
{ return @mssql_free_result($this->stmt);
}

public function ejecutar($sql){
$this->stmt=mssql_query($sql,$this->link);
return $this->stmt; }

}



Agradezco mucha la ayuda que me puedan brindar, no se si le haya pasado esto a alguien, o derrepente me pueden guiar
por donde podría estar el problema.

saludos,
Alonso