Buongiorno a tutti...
Avrei bisogno di richiamare una stored procedure (pl/sql) in php.
Sapete dirmi come si fa???
Grazie in anticipo
Buongiorno a tutti...
Avrei bisogno di richiamare una stored procedure (pl/sql) in php.
Sapete dirmi come si fa???
Grazie in anticipo
Allo stesso modo in cui esegui una query.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Questo è il codice che ho scritto io:
Questa è la store procedure che ho creato:Codice PHP:
<?php
$a=$_POST['a'];
$b=$_POST['b'];
if (!$con=oci_connect("console", "console", "sigla40t.zoo.intra")){die;}
else{
$s=oci_parse($con,"BEGIN :c :=cons_utility.prova(:a,:b); END;");
oci_bind_by_name($s,":c",$c);
oci_bind_by_name($s,":a",$a);
oci_bind_by_name($s,":b",$b);
oci_execute($s);
print "[".$c."]";
oci_close($con);
}
?>
Mi funziona finchè il risultato non ha due cifre. Se faccio la somma di 6 e 4 non funziona mi da questo errore:codice:function prova(a number, b number) return number is c number; begin c:= a + b; return (c); end;
Warning: oci_execute() [function.oci-execute]: ORA-06502: PL/SQL: errore : buffer della stringa di caratteri troppo piccolo di numero o valore ORA-06512: a line 1, perchè?
Ho risolto il problema...modificando questa riga:
così:Codice PHP:
oci_bind_by_name($s,":c",$c);
anche se non ho per niente idea di cosa faccia 40...mah!!! Avete qualche idea???Codice PHP:
oci_bind_by_name($s,":c",$c, 40);
L'ho trovato sul sito ufficiale di PHP ma non c'è spiegato perchè lo mette!!
http://php.net/manual/en/function.oci-parse.php (Secondo esempio)
Help me!!!![]()
Perchè cerchi la documentazione della funzione oci_parse() quando invece utilizzi la funzione oci_bind_by_name() ?
[maxlength]
Sets the maximum length for the data. If you set it to -1, this function will use the current length of variable to set the maximum length. In this case the variable must exist and contain data when oci_bind_by_name() is called.
dovresti provare con -1
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Inizialmente avevo cercato oci_parse e lì avevo trovato quell'esempio...da quello sono riuscita a fare il mio ma avevo tralasciato il 40 ora l'ho messo e funziona! Non c'avevo pensato di guardare l'oci_bind_by_name...
Grazie e scusa...