diff --git a/src/Driver/Oracle/Driver.php b/src/Driver/Oracle/Driver.php index d7cf6b88f0f66198cfe17b8099ebafd76d6edb7b..8776ac6a86d883f6e542319dfba7dc91d86dd6da 100644 --- a/src/Driver/Oracle/Driver.php +++ b/src/Driver/Oracle/Driver.php @@ -106,24 +106,19 @@ class Driver implements DriverInterface foreach ($params as $key => $val) { $type = isset($types[$key]) ? $types[$key] : null; - switch ($type) { - case Bdd::TYPE_CLOB: - $dkey = oci_new_descriptor($this->connexion, OCI_D_LOB); - $dkey->writeTemporary($params[$key], OCI_TEMP_CLOB); - //${$key} = oci_new_descriptor($this->connexion, OCI_D_LOB); - //${$key}->writeTemporary($params[$key], OCI_TEMP_CLOB); - ${$key} = $dkey; - oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_CLOB); - break; - case Bdd::TYPE_BLOB: - ${$key} = oci_new_descriptor($this->connexion, OCI_D_LOB); - ${$key}->writeTemporary($params[$key], OCI_TEMP_BLOB); - oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_BLOB); - break; - default: - ${$key} = $val; - oci_bind_by_name($statement, ':' . $key, ${$key}); - break; + + if (Bdd::TYPE_CLOB === $type && !empty($val)) { + $dkey = @oci_new_descriptor($this->connexion, OCI_D_LOB); + $dkey->writeTemporary($params[$key], OCI_TEMP_CLOB); + ${$key} = $dkey; + oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_CLOB); + } elseif (Bdd::TYPE_BLOB === $type && !empty($val)) { + ${$key} = @oci_new_descriptor($this->connexion, OCI_D_LOB); + ${$key}->writeTemporary($params[$key], OCI_TEMP_BLOB); + oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_BLOB); + } else { + ${$key} = $val; + oci_bind_by_name($statement, ':' . $key, ${$key}); } } if (false === @oci_execute($statement, $this->commitMode)) {