Nah dibagian ini aku akan nyoba jelasin, gimana supaya driver oci8 di CI bisa lebih kompatibel dengan oracle. Apabila kamu tidak melakukan patch ini bisa dipastikan kamu akan mengalami kesusahan waktu query2 di oracle. Salah satunya, bila kamu dalam satu page (satu function class CI) melakukan 2 atau lebih query Oracle, maka yang dihasilkan adalah result query yang pertama kali dilakukan. Sungguh mengganggu kan?…
Perlu diketahui cara ini dipakai apabila kamu terlanjur menggunakan CI 1.6.3 kebawah. Karena patch ini sudah di masukan ke dalam CI 1.7.0. Tapi ndak ada salahnya kan kalo kita tahu apa yang menyebabkan itu terjadi.?
Berikut langkah yang harus dijalankan. :
- Buka file ../system/database/DB_driver.php. Cari bagian seperti ini :
$driver = $this->load_rdriver(); $RES = new $driver(); $RES->conn_id = $this->conn_id; $RES->result_id = $this->result_id; $RES->num_rows = $RES->num_rows(); if ($this->dbdriver == 'oci8') { $RES->stmt_id = $this->stmt_id; $RES->curs_id = NULL; $RES->limit_used = $this->limit_used; }trus ubah lah menjadi seperti ini.
$driver = $this->load_rdriver(); $RES = new $driver(); $RES->conn_id = $this->conn_id; $RES->result_id = $this->result_id; if ($this->dbdriver == 'oci8') { $RES->stmt_id = $this->stmt_id; $RES->curs_id = NULL; $RES->limit_used = $this->limit_used; $this->stmt_id = NULL; } $RES->num_rows = $RES->num_rows();NULL juga bisa diganti dengan nilai FALSE.
- Buka gile ../system/database/driver/oci8/oci8_driver.php. Cari bagian seperti ini :
$this->_set_stmt_id($sql); ocisetprefetch($this->stmt_id, 1000); return @ociexecute($this->stmt_id, $this->_commit);
lalu ganti menjadi seperti ini :
$this->stmt_id = NULL; $this->_set_stmt_id($sql); ocisetprefetch($this->stmt_id, 1000); return @ociexecute($this->stmt_id, $this->_commit);
NULL juga bisa diganti dengan nilai FALSE.
- Masih di file yang sama , cari bagian seperti ini :
function _set_stmt_id($sql) { if ( ! is_resource($this->stmt_id)) { $this->stmt_id = ociparse($this->conn_id,$this->_prep_query($sql)); } }lalu ganti menjadi seperti ini :
function _set_stmt_id($sql) { $this->stmt_id = ociparse($this->conn_id,$this->_prep_query($sql)); }
Nah silakan dicoba, kalo aku sukses dengan perubahan2 diatas. dan sekarang aplikasiku tokcer dengan Oracle.
Sekedar info buat CI dan Oracle, jika kamu mau update atau delete record, gunakan…
$this->db->simple_query($sql)
Metode simple_query itu ada OCI_COMMIT_ON_SUCCESS di tiap selesai query.

Bagus ato Jelek:
0
0
masdeka…
bisa kasih contoh pake CI 1.7 dengan oracle XE, sampai sekarang ini saya masih susah pake CI dengan oracle Xe, saya ingin sekali itu bisa dijalankan.., tolong mas kirimkan saya satu contoh koneksi, kita pake saja database HR yang ada di oracle XE bagaimana menampilkan table employees. Tolong dikirimkan satu file model, satu file controler dan satu file view. Tolong sekali mas… tolong dikirimkan ke mansose@yahoo.com saya desperate sekali, saya beranggapan CI tidak support oracle XE..
Sebelumnya saya ucapkan terimakasih banyak…
Bagus ato Jelek:
0
0
@manton..
sori kalo lama bales,
net kantor tidak bisa di ajak kompromi.
ini aku tuliskan contoh kode yang konek ke oracle.
aku sudah mencoba nya di tempat ku, sukses kok
http://masdeka.web.id/contoh-simple-bikin-aplikasi-dengan-codeigniter
semoga membantu
wassalam
deka
Bagus ato Jelek:
0
0
Thanks tutorialnya, sangat membantu
Tapi link-linknya coba dibenerin, mas..
nyambungnya ke masdeka.com harusnya masdeka.web.id, bukan?
Bagus ato Jelek:
0
0
terima kasih mas aftri…
itu peninggalan dari proses pindah hosting dulu….
Bagus ato Jelek:
0
0
Thanks Tutornya… Mantabz… jadi ga sabar pengen nyobain oracle…
Bagus ato Jelek:
0
0
Sipp tutorialnya,
saya udah coba, mangstab banget. Running well, cman ada sedikit masalah klo saya coba pake $this->db->query($sql) kok muncul error ky gini ya
Line Number: 159
Mohon pencerahannya !!!
Bagus ato Jelek:
0
0
@zaqi.. mas.. environmentnya mas seperti apa? windows? oracle versi brapa? php brapa? CI versi brapa?
kalo bisa complete source nya disertakan juga…(sama sekalian SQL nya juga)..
Bagus ato Jelek:
0
0
OS: windows, Oracle 10g R2, CI Ver 1.7.1
Source :
function export_ijin(){
if($this->conn){
$sql=”SELECT * FROM IJIN”;
$result=odbc_exec($this->conn,$sql) or die(“Error”);
$i=0;
$sql_merge=array();
while($data=odbc_fetch_array($result)){
$sql_merge[]=”MERGE INTO IJIN b USING (
SELECT ‘”.$data['KODE_IJIN'].”‘ as KODE_IJIN
FROM DUAL) e
ON (b.IJIN_ID = e.KODE_IJIN)
WHEN MATCHED THEN
UPDATE SET b.IJIN_NAMA = ‘”.$data['KET_IJIN'].”‘,
b.IJIN_DIBAYAR=’”.$data['DIBAYAR'].”‘
WHEN NOT MATCHED THEN
INSERT (IJIN_ID, IJIN_NAMA, IJIN_DIBAYAR)
VALUES (‘”.$data['KODE_IJIN'].”‘,’”.$data['KET_IJIN'].”‘,
‘”.$data['DIBAYAR'].”‘)”;
//echo $sql_merge;
$this->db->query($sql_merge,FALSE,TRUE);
$i++;
}
if($i>0)
return ’1′;
else
return ’0′;
}else
return “0″;
}
catatan :
- jika opsi : $this->db->query($sql_merge,FALSE,FALSE); ->param terakhir FALSE
tidak kluar error cuman data yg diexport 1 row aja, klo diganti TRUE, jadi error kyk di atas tp data masuk semua
- klo pake simple query data yg masuk cuman 1
Makasih atas info dan sarannya
Bagus ato Jelek:
0
0
[...] Oracle Automatic Storage Management Recent Comments Catatan (PHP) » Pengertian MVC di CodeIgniter on Contoh simple bikin aplikasi dengan CodeIgniter.Catatan (PHP) » Mulai dengan CodeIgniter on Pengertian MVC di CodeIgniterdeka on Bikin Laporan PDF dengan CodeIgniteryoze on Bikin Laporan PDF dengan CodeIgniterzaqi on Patch CodeIgniter untuk Koneksi ke Oracle [...]
Bagus ato Jelek:
0
0
@zaqi.
mas udah coba pake $this->db->simple_query($sql);
coz dari CI disarankan untuk make fungsi itu bila query yang dijalankan jenisnya perubahan (insert, update, delete).
saya juga dulu sering make $this->db->query() tapi sering ada bug waktu query2 seperti itu..
lali aku coba simple_query, ndak ada masalah.
gudlak.
Bagus ato Jelek:
0
0
Mas pernah nyoba manggil function di oracle pake PHP. Aku nyoba beberapa fungsi jalan, dan hasilnya keluar. Saat ini aku nyoba panggil sebuah funsi untuk memanggil perhitungan, anehnya klo aku manggilnya pake TOAD hasilnya keluar tapi klo aku dah manggil pake PHP hasilnya kosong padahal parameter yang aku kirim dah sama persis. (aku pake oci_bind_by_name untuk kirim parameter, dan aku dah nyoba beberapa fungsi berhasil)
Mohon bantuannya mas…Kira-kira aku salah dimana ya? Aku dah nyoba kirim parameternya pake array juga tidak bisa. Oh ya sebetulnya aku pake CI, tapi aku bingung cara manggil function oracle di CI, jadi aku pake koneksi manual (oci_connect bla..bla..)
Terima kasih sebelum dan sesudahnya…
Bagus ato Jelek:
0
0
@anata..
sebenernya manggil fungsi oracle di CI sama dengan manggil dengan database lain.
FYI, di CI pemanggilan fungsi database secara langsung hampir tidak ada, karena hampir semua fungsi database standard sudah di cover oleh driver database CI,
jadi tinggal set parameter database di config/database.php,
trus di controller, tinggal panggil $result = $this->db->query($sql);
dan ambil hasilnya dengan $hasil_array = $result->result_array().. dah jadi deh hasilnya.
soal di toad bisa , trus di CI gak bisa..
bisa gak di kasih contoh sql nya dan contoh skrip php CI nya..
mungkin bisa kelihatan trouble nya dimana…
regards..
Bagus ato Jelek:
0
0
ada yang tau, konek ke firebird via CI
Bagus ato Jelek:
0
0
cara mengeksekusi store procedure / function yang ada di oracle lewat CI
bagaimana caranya ya ?
thanks
Bagus ato Jelek:
0
0
@codeiginter-noob .. kalo aku pake method ini
$this->db->simple_query(“CALL NAMA_JOB(argumen)”);
mungkin temen2 yang lain punya cara lain…
@contek_coding.. sebenernya firebird bisa dikonek ama CI, tinggal dibikin driver sendiri aja, karena default dukungan database CI dari situsnya cuma mysql, oracle, sqllite, postgre, mssql, odbc.
bikin driver sendiri teorinya sih mudah, tinggal ambil contoh driver db lain, trus perintah2 koneksi dbnya di ganti dengan perintah koneksi ke firebird / interbase.. secara praktek sih aku blum pernah coba
Bagus ato Jelek:
1
0
jika muncul seperti gimana mas?
A PHP Error was encountered
Severity: Notice
Message: Undefined property: stdClass::$numrows
Filename: oci8/oci8_driver.php
Line Number: 476
terim kasih y mas
saya pake oracle XE,CI 1.7.2
Bagus ato Jelek:
0
0
@anata
itu sepertinya indeksinya
kalo mo aman pake OCI_BOTH za
Bagus ato Jelek:
0
0
mas sy maw tanya sy skrg pake ci 1.7.2 dengan database oracle 10g..
dalam eksekusi query insert, update and delete itu sukses 100% nah masalah saya dari sisi session saat login bila sukses berhasil masuk pada halaman utama dan session pun dapat di panggil tp pada saat linking pada halaman atau kontroller lain session tersebut hilang seperti halnya di lakukan session destroy dari permasalahan tersebut apakah ada hal-hal yang harus dilakukan atau ada konfigurasi tertentu agar tidak ada masalah pada session pada saat menggunakan oracle 10g soalnya pada saat saya menggunakan database mysql or mssql permasalah session itu tidak ada alias lancar..
mohon pencerahannya…
Bagus ato Jelek:
0
0
membantu banget gan,
thanks berat.
nyari jawaban pake english,
nggak taunya yang kasih solusi rekan sebangsa setanah air
Bagus ato Jelek:
0
0
terima kasih ….:)