Si no puede cambiar el símbolo decimal de su sistema operativo (o simplemente no quiere), la única solución para este problema es evitar los parámetros flotantes. Debe ingresar el valor directamente en el sql. También debe estar consciente de usar en_US como configuración regional para el separador decimal correcto.
// Ensure that the period is used as decimal separator when converting float to string
setlocale(LC_ALL, 'en_US');
// Generate SQL
// ...
$variables = array();
if(is_int($myValue))
{
$sql .= ':MYVALUE';
$variables[':MYVALUE'] = $myValue;
}
else if(is_float($myValue))
{
$sql .= (string) $myValue;
}
// ...
// Generate statement
// $resource = oci_parse(...);
// Bind parameters (if neccessary)
if(count($variables) > 0)
{
foreach($variables as $name => &$variable)
oci_bind_by_name($resource, $name, $variable);
}