Codice PHP:
	
// esecuzione della query che imposta i parametri di riferimento per tutti i contratti da aggiornare definizione del primo ciclo$sql = "SELECT [IDCONTRATTO] ,[CodiceSezUpdated],[OreSezUpdated] FROM [Sicura].[dbo].[BiriOreSezUpdated]";$params = array();$options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );$stmt = sqlsrv_query( $conn, $sql , $params, $options );$row_count = sqlsrv_num_rows( $stmt );// Se l'oggetto è vuoto restituisco un erroreif( $stmt === false ) {     die( print_r( sqlsrv_errors(), true));}
//Inizio del primo ciclowhile($obj = sqlsrv_fetch_object($stmt)) {//1 PARTE               // Setto i parametri di riferimento per le ore_int dei contratti sucessivamente trovati dagli altri cicli$contratto=$obj->IDCONTRATTO;$sezione=$obj->CodiceSezUpdated;$oreupdated=$obj->OreSezUpdated;//echo "Primo Ciclo - Contratto : ".$contratto." - Sezione : ".$sezione." - ValOreUpdatet : ".$oreupdated."\n";//2 PARTE - AVVIO IL SECONDO CICLO SU CONTRATTI RINNOVATI DAL CONTRATTO ORIGINE UPDATED$sql1 = "SELECT [IDCONTRATTO] ,[SEZIONECONTRATTO] ,[OLD_RifSezioneGemma] ,[ORE_INT], [SEZIONECONTRATTO_Prec] FROM [Sicura].[dbo].[GEM_SEZIONICONTRATTO] where [OLD_RifSezioneGemma]='".$contratto."' and [SEZIONECONTRATTO_Prec]='".$sezione."'";$stmt1 = sqlsrv_query( $conn, $sql1 , $params, $options );// Se l'oggetto è vuoto restituisco un erroreif( $stmt1 === false ) {    die( print_r( sqlsrv_errors(), true));}while($obj1 = sqlsrv_fetch_object( $stmt1)) {    $contratto1=$obj1->IDCONTRATTO;    $sezione1=$obj1->SEZIONECONTRATTO;         $oreint1=$obj1->ORE_INT;//echo "Contratto Riferimento: ".$contratto."-".$sezione." Contratto Correlato: ".$contratto1."-".$sezione1."\n";
$sql2 = "SELECT [IDCONTRATTO] ,[SEZIONECONTRATTO] ,[OLD_RifSezioneGemma] ,[ORE_INT], [SEZIONECONTRATTO_Prec] FROM [Sicura].[dbo].[GEM_SEZIONICONTRATTO] where [OLD_RifSezioneGemma]='".$contratto1."' and [SEZIONECONTRATTO_Prec]='".$sezione1."'";$stmt2 = sqlsrv_query( $conn, $sql2 , $params, $options );// Se l'oggetto è vuoto restituisco un erroreif( $stmt2 === false ) {    die( print_r( sqlsrv_errors(), true));}while($obj2 = sqlsrv_fetch_object( $stmt2)) {    $contratto2=$obj2->IDCONTRATTO;    $sezione2=$obj2->SEZIONECONTRATTO;         $oreint2=$obj2->ORE_INT;//$sql3 = "SELECT [IDCONTRATTO] ,[SEZIONECONTRATTO] ,[OLD_RifSezioneGemma] ,[ORE_INT], [SEZIONECONTRATTO_Prec] FROM [Sicura].[dbo].[GEM_SEZIONICONTRATTO] where [OLD_RifSezioneGemma]='".$contratto2."' and [SEZIONECONTRATTO_Prec]='".$sezione2."'";$stmt3 = sqlsrv_query( $conn, $sql3 , $params, $options );// Se l'oggetto è vuoto restituisco un erroreif( $stmt3 === false ) {    die( print_r( sqlsrv_errors(), true));}while($obj3 = sqlsrv_fetch_object( $stmt3)) {    $contratto3=$obj3->IDCONTRATTO;    $sezione3=$obj3->SEZIONECONTRATTO;         $oreint3=$obj3->ORE_INT;$sql4 = "SELECT [IDCONTRATTO] ,[SEZIONECONTRATTO] ,[OLD_RifSezioneGemma] ,[ORE_INT], [SEZIONECONTRATTO_Prec] FROM [Sicura].[dbo].[GEM_SEZIONICONTRATTO] where [OLD_RifSezioneGemma]='".$contratto3."' and [SEZIONECONTRATTO_Prec]='".$sezione3."'";$stmt4 = sqlsrv_query( $conn, $sql4 , $params, $options );// Se l'oggetto è vuoto restituisco un erroreif( $stmt4 === false ) {    die( print_r( sqlsrv_errors(), true));}while($obj4 = sqlsrv_fetch_object( $stmt4)) {    $contratto4=$obj4->IDCONTRATTO;    $sezione4=$obj4->SEZIONECONTRATTO;    $oreint4=$obj4->ORE_INT;      echo "Contratto Riferimento: ".$contratto."-".$sezione." Contratto Correlato D: ".$contratto4."-".$sezione4."\n";//Accodo sulla Tabella di Log i valori old e quelli aggiornati                $sqlu4 = "INSERT INTO BiriOreSezUpdatedLog(IDCONTRATTOBASE, CodiceSezUpdatedBASE, OreSezUpdatedBASE, IDCONTRATTOBASETU, CodiceSezTU, OreSezBefore)                VALUES        ( ?, ?, ?, ?, ?, ? )";                $params4 = array($contratto, $sezione, $oreupdated,$contratto4,$sezione4, $oreint4);                $stmtU4 = sqlsrv_query( $conn, $sqlu4, $params4);}echo "Contratto Riferimento: ".$contratto."-".$sezione." Contratto Correlato C: ".$contratto3."-".$sezione3."\n";                $sqlu3 = "INSERT INTO BiriOreSezUpdatedLog(IDCONTRATTOBASE, CodiceSezUpdatedBASE, OreSezUpdatedBASE, IDCONTRATTOBASETU, CodiceSezTU, OreSezBefore)                VALUES        ( ?, ?, ?, ?, ?, ? )";                $params3 = array($contratto, $sezione, $oreupdated,$contratto3,$sezione3, $oreint3);                $stmtU3 = sqlsrv_query( $conn, $sqlu3, $params3);                }echo "Contratto Riferimento: ".$contratto."-".$sezione." Contratto Correlato B: ".$contratto2."-".$sezione2."\n";                $sqlu2 = "INSERT INTO BiriOreSezUpdatedLog(IDCONTRATTOBASE, CodiceSezUpdatedBASE, OreSezUpdatedBASE, IDCONTRATTOBASETU, CodiceSezTU, OreSezBefore)                VALUES        ( ?, ?, ?, ?, ?, ? )";                $params2 = array($contratto, $sezione, $oreupdated,$contratto2,$sezione2, $oreint2);                $stmtU2 = sqlsrv_query( $conn, $sqlu2, $params2);                }echo "Contratto Riferimento: ".$contratto."-".$sezione." Contratto Correlato A: ".$contratto1."-".$sezione1."\n";                $sqlu1 = "INSERT INTO BiriOreSezUpdatedLog(IDCONTRATTOBASE, CodiceSezUpdatedBASE, OreSezUpdatedBASE, IDCONTRATTOBASETU, CodiceSezTU, OreSezBefore)                VALUES        ( ?, ?, ?, ?, ?, ? )";                $params1 = array($contratto, $sezione, $oreupdated,$contratto1,$sezione1, $oreint1);                $stmtU1 = sqlsrv_query( $conn, $sqlu1, $params1);                }}// chiudo la connessione al dbsqlsrv_close($conn);