Welcome Guest, Not a member yet? Register   Sign In
Oracle OCI8 support for CI 4
#6

Hi Boyos!
i fixed the problem rewriting the Connection.php from the OCI8 Driver this way:
Code:
public function storedProcedure(string $package, string $procedure, array $params)
    {
        if ($package === '' || $procedure === '') {
            throw new DatabaseException(lang('Database.invalidArgument', [$package . $procedure]));
        }

        // Build the query string
        $sql = 'BEGIN ' . $package . '.' . $procedure . '(';

        $haveCursor = false;

        foreach ($params as $param) {
            $sql .= $param['name'] . ',';

            if (isset($param['type']) && $param['type'] === OCI_B_CURSOR) {
                $haveCursor = true;
            }
        }
        $sql = trim($sql, ',') . '); END;';

        /** by gus */
        try {
            // Connect to the database and set the connection ID
            $this->connID = $this->connect($this->pConnect);
        } catch (Throwable $e) {
            $connectionErrors[] = sprintf('Main connection [%s]: %s', $this->DBDriver, $e->getMessage());
            log_message('error', 'Error connecting to the database: ' . $e->getMessage());
        }
        /** by gus */

        $this->resetStmtId = false;
        $this->stmtId      = oci_parse($this->connID, $sql);
        $this->bindParams($params);
        /** by gus CHANGE FOR NULL */
        $result            = $this->query($sql, null, $haveCursor);
        $this->resetStmtId = true;

        /** by gus */
        $this->close();
        /** by gus */
        return $result;
    }

    /**
    * Bind parameters
    *
    * @param array $params
    *
    * @return void
    */
    protected function bindParams($params)
    {
        if (! is_array($params) || ! is_resource($this->stmtId)) {
            return;
        }

        foreach ($params as $param) {
            foreach (['name', 'value', 'type', 'length'] as $val) {
                if (! isset($param[$val])) {
                    /** by gus */
                    $param[$val] = null;
                    /** by gus */
                }
            }
            /** by gus */
            $param['length'] = ($param['length'] == null)? -1 : $param['length'];
            $param['type'] = ($param['type'] == null)? SQLT_CHR : $param['type'];
            /** by gus */
            oci_bind_by_name($this->stmtId, $param['name'], $param['value'], $param['length'], $param['type']);
        }
    }


All yours for testing!
Salute!
Reply


Messages In This Thread
Oracle OCI8 support for CI 4 - by ajk - 05-07-2020, 04:03 PM
RE: Oracle OCI8 support for CI 4 - by kilishan - 05-07-2020, 09:03 PM
RE: Oracle OCI8 support for CI 4 - by ajk - 04-15-2021, 11:57 AM
RE: Oracle OCI8 support for CI 4 - by kenjis - 10-13-2021, 12:11 AM
RE: Oracle OCI8 support for CI 4 - by b126 - 10-30-2021, 01:28 PM
RE: Oracle OCI8 support for CI 4 - by gurthang75 - 10-25-2021, 01:08 PM
RE: Oracle OCI8 support for CI 4 - by kenjis - 10-30-2021, 04:16 PM
RE: Oracle OCI8 support for CI 4 - by gurthang75 - 10-26-2021, 01:44 PM
RE: Oracle OCI8 support for CI 4 - by gurthang75 - 11-23-2021, 09:07 AM
RE: Oracle OCI8 support for CI 4 - by rocksvern - 11-29-2021, 07:51 AM
RE: Oracle OCI8 support for CI 4 - by gurthang75 - 12-09-2021, 05:24 AM
RE: Oracle OCI8 support for CI 4 - by kenjis - 11-28-2021, 06:16 PM
RE: Oracle OCI8 support for CI 4 - by kenjis - 11-30-2021, 01:01 AM
RE: Oracle OCI8 support for CI 4 - by kenjis - 12-29-2021, 02:48 AM
RE: Oracle OCI8 support for CI 4 - by kenjis - 01-25-2022, 04:54 PM
RE: Oracle OCI8 support for CI 4 - by b126 - 02-11-2022, 06:05 PM
RE: Oracle OCI8 support for CI 4 - by kenjis - 06-08-2022, 05:23 PM
RE: Oracle OCI8 support for CI 4 - by b126 - 02-21-2023, 09:32 AM
RE: Oracle OCI8 support for CI 4 - by luckmoshy - 06-08-2022, 11:33 PM
RE: Oracle OCI8 support for CI 4 - by nilo - 11-29-2023, 04:33 PM
RE: Oracle OCI8 support for CI 4 - by kenjis - 11-29-2023, 04:47 PM
RE: Oracle OCI8 support for CI 4 - by nilo - 12-04-2023, 01:18 AM



Theme © iAndrew 2016 - Forum software by © MyBB