From 21b467451d942ca21d2b2ca6240e6e36ac1e1483 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Wed, 6 Dec 2023 10:40:07 +0100
Subject: [PATCH] Gestion des NULL pour les CLOB et BLOB On ignore certains
 messages deprecated qu'on ne peut pas contourner

---
 src/Driver/Oracle/Driver.php | 31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)

diff --git a/src/Driver/Oracle/Driver.php b/src/Driver/Oracle/Driver.php
index d7cf6b8..8776ac6 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)) {
-- 
GitLab