sql >> Database teknologi >  >> RDS >> Oracle

PHP-OCI Call Stored Procedure med parametre

Brug af foreach tilgang fra mit svar til et andet af dine spørgsmål er ikke en god idé, når du beskæftiger dig med lagrede procedurer.

Mens det virker (som vist i dit spørgsmål, er variablerne sat i $params array efter udførelse) er det største problem, at du skal angive den fjerde parameter (maxlength ) til oci_bind_by_name . Du har brugt en statisk værdi på 32 i din kode, men der opstår en fejl, når længden af ​​en værdi overstiger denne. Det kan ikke beregnes under kørsel, og at sætte det til en meget stor værdi er ineffektivt (måske er dette ikke et problem for din applikation).

Da du kører en kendt lagret procedure, bør du kende maxlength af outputværdier på designtidspunktet, og disse kan indtastes statisk ved at sætte alle oci_* funktioner i getHours() , i stedet for at forsøge at abstrahere alle kald til customExecute() .




  1. konsekvenser af at ændre mysql-lagringsmotor, mens applikationen kører i produktion

  2. Sådan genereres et skema fra en CSV til en PostgreSQL-kopi

  3. ExecuteNonQuery kaster ikke undtagelse ved indsættelse

  4. Oracle SQL-dato til lang og omvendt