Pessoal, estou com o seguinte problema.
Criei aqui uma procedure em Firebird e estou precisando executa-la através do botão Run. O problema é que a procedure está executando apenas uma vez dentro do loop sendo que selecionei 3 registros. O que pode ser?
Abaixo como estou fazendo:
//onRecord Botão Run:
$arr=[j];
[total_chked_j][$arr]={empresa}.' '.[ano].' '.[mes].' '.{funcionario}.' '.{adm}.' '.{tipo}.' '.{qtd};
[j]++;
//onFinish Botão Run:
$tot = count([total_chked_j]);
echo '<div style="border:1px solid grey;padding:10px;font-size:12pt;text-align:left;text-color:red">';
for($x=0;$x<$tot;$x++){
//echo $x.'<br>';
$vr = [total_chked_j][$x];
$v_vr = explode(" ", $vr);
$emp = $v_vr[0];
//$ano = $v_vr[1];
//$mes = $v_vr[2];
$fun = $v_vr[3];
$adm = $v_vr[4];
$tip = $v_vr[5];
$qtd = $v_vr[6];
if ($qtd != ''){
if([sc_glo_tpbanco] == "firebird" or [sc_glo_tpbanco] == "ibase" or [sc_glo_tpbanco] == "interbase"){
$sql = "EXECUTE PROCEDURE sp_calculo(
'".$emp."',"
.$adm.","
.$tip.","
.$v_vr[1].","
.$v_vr[2].","
.$fun.");";
sc_lookup(rs,$sql);
if(!empty({rs})){
if({rs[0][0]} <> 'S'){
sc_error_message("Erro na execucao da procedure [".{rs[0][0]}."] [".{rs[0][1]}."]");
sc_error_exit();
sc_rollback_trans();
}
}
}elseif([sc_glo_tpbanco] == "oracle" or [sc_glo_tpbanco] == "oci805" ){
$sql = "BEGIN sp_calculo("
. "'" . $emp. "',"
. $adm . ","
. $tip . ","
. $v_vr[1] . ","
. $v_vr[2] . ","
. $fun. ",:ret_sts,:ret_msg"
. "); END;";
$stmt = $this->Db->PrepareSP($sql);
$this->Db->OutParameter($stmt,$sts,'ret_sts');
$this->Db->OutParameter($stmt,$msg,'ret_msg');
$this->Db->Execute($stmt);
$response = array("ret_sts"=>$sts, "ret_msg"=>$msg);
if (!rtrim($sts) != ''){
sc_rollback_trans();
sc_error_message($msg);
sc_error_exit("form","_parent");
}
}
}
}
echo '</div>';
[b]Detalhe…vcs podem ver que chamo uma procedure em oracle. Quando está na conexão oracle, ele faz o loop e executa a procedure normalmente. Isso está acontecendo apenas com o firebird.
Obs: Uso o scriptcase 5[/b]
Att.