Avatar billede sbay Nybegynder
18. maj 2009 - 21:03 Der er 4 kommentarer

Php kode til Stored Procedure

Hejsa

Vil der være fornuftigt i at lave nedenståenden kode om til en SP? I så fald vil det være nødvendigt med et kraftigt spark i den rigtige retning for hvordan det gøres!

$Prefix[0] = "KL0"; //Denmark
$Prefix[1] = "KLS"; //Sweden
$k = 0;
$l = 0;
$t = 0;
$s =0;
$size = count($Prefix);
While ($size > $k)
    {

    echo "<br> Starting generating all design numbers in EDEMP.CLICHE1 for ".$Prefix[$k]." !";
    $letters = $Prefix[$k];

    $i = 0;
    while ($i < 100000 )
    {
        if (strlen($Prefix[$l]) == 2)
        {
            if (strlen($i) == 1 ) { $array_IPROD[$i] = $letters."00000".$i;}
            if (strlen($i) == 2 ) { $array_IPROD[$i] = $letters."0000".$i;}
            if (strlen($i) == 3 ) { $array_IPROD[$i] = $letters."000".$i;}
            if (strlen($i) == 4 ) { $array_IPROD[$i] = $letters."00".$i;}
            if (strlen($i) == 5 ) { $array_IPROD[$i] = $letters."0".$i;}
            if (strlen($i) == 6 ) { $array_IPROD[$i] = $letters.$i;}
            //echo $array_IPROD[$i] . "<br>";

            $sql = "INSERT INTO " . $database.".".$file."(ID,CLICHENO,Status) VALUES('$array_IPROD[$i]','$array_IPROD[$i]',1)";
            //echo "<br>".$sql."<br>";
            $rs = odbc_exec($conn,$sql);
           
        }
   
        if (strlen($Prefix[$l]) == 3)
        {
            if (strlen($i) == 1 ) { $array_IPROD[$i] = $letters."0000".$i;}
            if (strlen($i) == 2 ) { $array_IPROD[$i] = $letters."000".$i;}
            if (strlen($i) == 3 ) { $array_IPROD[$i] = $letters."00".$i;}
            if (strlen($i) == 4 ) { $array_IPROD[$i] = $letters."0".$i;}
            if (strlen($i) == 5 ) { $array_IPROD[$i] = $letters.$i;}
            //echo $array_IPROD[$i] . "<br>";

            $sql = "INSERT INTO " . $database.".".$file."(ID,CLICHENO,Status) VALUES('$array_IPROD[$i]','$array_IPROD[$i]',1)";
            //echo "<br>".$sql."<br>";
            $rs = odbc_exec($conn,$sql);
           
        }
        //echo "<br>".$i;   
        $i++;
        $s++;
        if ($s == 1000) {$s=0; echo "1000 records inserted!<br>";}
       
    }
    echo "<br> Finished generating all design numbers in EDEMP.CLICHE1 for ".$Prefix[$k]." !<br>";
$l++;
$k++;
}
Avatar billede arne_v Ekspert
19. maj 2009 - 04:00 #1
Det kunne man godt.

Men det ligner noget som kun skal køres sjældent. Hvis det er rigtigt og din PHP kode virker - hvorfor så lave det om ?
Avatar billede sbay Nybegynder
19. maj 2009 - 11:52 #2
Hejsa

Du har ret i at lige denne funktion i teorien kun burde køres en gang. Men jeg har nogle andre sider der opdaterer dagligt i tabllen - og min umiddelbare ide, var da også at køre det som PHP-sider, og så skyde det ned i MSSQL tabellerne (i dag skydes det ned i en DB2 tabel) Men f.eks hver søndag, kunne det være rart at slette alt og opdatere direkte fra kilden, så jeg er 112% sikker på at data er korrekt - og i så fald er en SP jo smart! Men jeg mangler lidt hjælp til at komme igang!
Avatar billede sbay Nybegynder
08. juli 2009 - 09:21 #3
Ikke nogen der konkret kan hjælpe? Jeg får nemlig timeout på scriptet, da det tager over 5 minutter at køre! Og vil meget gerne have det som en SP!
Avatar billede arne_v Ekspert
11. juli 2009 - 21:06 #4
Hvis du kalder SP'en fra din PHP side, så vil det næppe ændre timeout problemet at du flytter løkken fra PHP til SP.

Overvej at kør det i 20 x 5000 fremfor 1 x 100000.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester