tns = $ORA_TNS; $this->user = $ORA_User; $this->password = $ORA_Password; } else { $this->has_error = 1; $this->last_error_msg = "The file $file do not exists."; exit(); } $this->execution_mode = $execution_mode; $this->record_sep = chr(31); $this->field_sep = chr(30); # $this->record_sep = '#'; # $this->field_sep = '^'; } public function set_debugger($mode) { oci_internal_debug($mode); } public function set_auto_commit() { $this->execution_mode = OCI_COMMIT_ON_SUCCESS; } public function set_no_auto_commit() { $this->execution_mode = OCI_DEFAULT; } public function ORA_Connect () { $result = false; $this->conn = oci_connect($this->user, $this->password, $this->tns); # $this->conn = oci_connect($this->user, $this->password, '//localhost/XE'); if (empty($this->conn)) { $e = oci_error(); $this->last_error_msg = $e['message']; $result = false; } else { $result = true; } $this->conn_status = $result; return $result; } public function ORA_PConnect () { $result = false; $this->conn = oci_connect($this->user, $this->password, $this->tns); if (empty($this->conn)) { $e = oci_error(); $this->last_error_msg = $e['message']; $result = false; } else { $result = true; } $this->conn_status = $result; return $result; } public function ORA_Close () { $status = false; if ($this->conn) { $status = oci_close($this->conn); } return $status; } // end of private function DB2Close function ORA_Commit() { $status = oci_commit($this->conn); return $status; } function ORA_Rollback() { $status = oci_rollback($this->conn); return $status; } function ORA_InsertData($stmt=null,$table_name=null) { if (is_null($stmt) && !is_null($table_name)) { foreach ($_REQUEST as $key => $val) { //str_replace(array('\'','\''),''',$val) //$stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; //$val = str_replace(array('\'','\''),''',$val); $val = str_replace(array('\\\'','\''),'`',$val); $val = str_replace(array('\\"'),'"',$val); $stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; } if (!is_null($stmt_string_array)) { $stmt_string=implode($this->record_sep,$stmt_string_array); $stmt_string .= $this->record_sep; $stmt_res = oci_parse($this->conn,"call sys_dml.Insert_Table('$table_name','$stmt_string')"); $result = oci_execute($stmt_res,$this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); $this->last_exec_stmt = $stmt_string; #var_dump($e); } } } elseif (!is_null($stmt)) { $stmt = oci_parse($this->conn, $stmt); $result = oci_execute($stmt, $this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); #var_dump($e); } } else { $this->last_error_msg ="Both argument can not be null."; $result = false; } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_DeleteData($stmt=null,$table_name=null) { if (is_null($stmt) && !is_null($table_name)) { foreach ($_REQUEST as $key => $val) { $stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; } if (!is_null($stmt_string_array)) { $stmt_string=implode($this->record_sep,$stmt_string_array); $stmt_string .= $this->record_sep; $stmt_res = oci_parse($this->conn,"call sys_dml.Delete_Table('$table_name','$stmt_string')"); $result = oci_execute($stmt_res,$this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); #var_dump($e); } } } elseif (!is_null($stmt)) { $stmt = oci_parse($this->conn, $stmt); $result = oci_execute($stmt, $this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); #var_dump($e); } } else { $this->last_error_msg ="Both argument can not be null."; $result = false; } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_UpdateData($stmt=null,$table_name=null) { if (is_null($stmt) && !is_null($table_name)) { foreach ($_REQUEST as $key => $val) { //$stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; //$val = str_replace(array('\'','\''),''',$val); $val = str_replace(array('\\\'','\''),'`',$val); $val = str_replace(array('\\"'),'"',$val); $stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; } if (!is_null($stmt_string_array)) { $stmt_string=implode($this->record_sep,$stmt_string_array); $stmt_string .= $this->record_sep; $stmt_res = oci_parse($this->conn,"call sys_dml.Update_Table('$table_name','$stmt_string')"); $result = oci_execute($stmt_res,$this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); $this->last_exec_stmt = $stmt_string; #var_dump($e); } } } elseif (!is_null($stmt)) { $stmt = oci_parse($this->conn, $stmt); $result = oci_execute($stmt, $this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); #var_dump($e); } } else { $this->last_error_msg ="Both argument can not be null."; $result = false; } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_SelectData($stmt=null,$table_name=null,$where_clause=null,$select_method=OCI_FETCHSTATEMENT_BY_COLUMN) { if (!is_null($stmt)) { $stmt_res = oci_parse($this->conn, $stmt); if (!oci_execute($stmt_res, OCI_DEFAULT)) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); #var_dump($e); } else { $this->nrows = oci_fetch_all($stmt_res,$result,null,null,$select_method); } } elseif (!is_null($table_name)) { $stmt = "select * from {$table_name} {$where_clause}"; $stmt_res = oci_parse($this->conn, $stmt); if (!oci_execute($stmt_res, OCI_DEFAULT)) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); } else { $this->nrows = oci_fetch_all($stmt,$result,null,null,$select_method); } } else { $this->last_error_msg ="Either one of the argument can not be null."; $result =null; } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_UpdateDataWithBind($table_name=null) { if (!is_null($table_name)) { foreach ($_REQUEST as $key => $val) { $stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; } if (!is_null($stmt_string_array)) { $stmt_string=implode($this->record_sep,$stmt_string_array); $stmt_string .= $this->record_sep; $stmt = "begin sys_dml.Update_Table ('$table_name',:stmt_string); end;"; $stmt_res = oci_parse($this->conn,$stmt); oci_bind_by_name($stmt_res, ':stmt_string',$stmt_string); $result = oci_execute($stmt_res, $this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); $this->last_exec_stmt = $stmt_string; #var_dump($e); } } else { $this->last_error_msg ="There is nothing to update."; $result = false; } } else { $this->last_error_msg ="Table name can not be null"; $result = false; } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_InsertDataWithBind($table_name=null) { if (!is_null($table_name)) { foreach ($_REQUEST as $key => $val) { $stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; } if (!is_null($stmt_string_array)) { $stmt_string=implode($this->record_sep,$stmt_string_array); $stmt_string .= $this->record_sep; $stmt = "begin sys_dml.Insert_Table ('$table_name',:stmt_string); end;"; $stmt_res = oci_parse($this->conn,$stmt); oci_bind_by_name($stmt_res, ':stmt_string',$stmt_string); $result = oci_execute($stmt_res, $this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); $this->last_exec_stmt = $stmt_string; } } else { $this->last_error_msg ="There is nothing to add."; $result = false; } } else { $this->last_error_msg ="Table name can not be null."; $result = false; } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_ProcedureCall($function_name,$num_ret_val,$str_ret_val) { $ret_var_string = ''; if (!is_null($function_name)) { for ($i=0;$i<$num_ret_val;$i++) { $ret_var_string_array[] = ":n{$i}"; } if ($str_ret_val > 0) { for ($i=0;$i<$str_ret_val;$i++) { $ret_var_string_array[] = ":s{$i}"; } } if (!is_null($ret_var_string_array)){ $ret_var_string = ','; $ret_var_string .= implode(',',$ret_var_string_array); } foreach ($_REQUEST as $key => $val) { $stmt_string_array[] = "{$key}".$this->field_sep."{$val}"; } if (!is_null($stmt_string_array)) { $stmt_string=implode($this->record_sep,$stmt_string_array); $stmt_string .= $this->record_sep; } $stmt = "begin {$function_name}('$stmt_string' $ret_var_string); end;"; $stmt_res = oci_parse($this->conn,$stmt); for ($i=0;$i<$num_ret_val;$i++) { oci_bind_by_name($stmt_res, ":n{$i}",$bind_result[$i], -1, SQLT_INT); } if ($str_ret_val > 0) { $j=$i; for ($i=0;$i<$str_ret_val;$i++) { oci_bind_by_name($stmt_res, ":s{$i}",$bind_result[$j], 4000, SQLT_CHR); $j++; } } if (!oci_execute($stmt_res, $this->execution_mode)) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); } } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $bind_result; } function SetServerOutput($p) { if ($p) $s = "BEGIN DBMS_OUTPUT.ENABLE(NULL); END;"; else $s = "BEGIN DBMS_OUTPUT.DISABLE(); END;"; $s = oci_parse($this->conn, $s); $r = oci_execute($s); if (!is_null($s)):oci_free_statement($s);endif; // oci_free_statement($s); return $r; } function SetDbmsOutput() { $res = false; $s = oci_parse($this->conn, "BEGIN DBMS_OUTPUT.GET_LINE(:LN, :ST); END;"); if (oci_bind_by_name($s, ":LN", $ln, 255) && oci_bind_by_name($s, ":ST", $st)) { $res = array(); while (($succ = oci_execute($s)) && !$st) $res[] = $ln; if (!$succ) $res = false; } if (!is_null($s)):oci_free_statement($s);endif; // oci_free_statement($s); return $res; } function GetDbmsOutput() { $output = $this->SetDbmsOutput(); foreach ($output as $line) echo "$line
"; } function ORA_FunctionCall($function_name) { if (!is_null($function_name)) { $stmt = "begin :ret := {$function_name}; end;"; $stmt_res = oci_parse($this->conn, $stmt); oci_bind_by_name($stmt_res, ":ret", $result, 32000); if (!oci_execute($stmt_res, $this->execution_mode)) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); } } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function ORA_InsertBlob($tblName,$arrayCol=null,$arrayColNumber=null,$arrayBlob){ $totalCol = count($arrayCol); $totalLob = count($arrayBlob); $lobCounter = 1; if (!is_null($arrayCol)) { foreach ($arrayCol as $tkey => $tval) { $col_line_array[] = $tkey; $values_line_array[] = $tval; $colBindNameAray[] = ":$tkey"; } } if (!is_null($arrayColNumber)) { foreach ($arrayColNumber as $tkey => $tval) { $col_line_array[] = $tkey; $values_line_array[] = $tval; $colBindNameAray[] = ":$tkey"; } } foreach ($arrayBlob as $lkey => $lval) { $col_line_array[] = $lkey; $blob_values_line_array[] = "EMPTY_BLOB()"; $ret_blob_line_array[] = $lkey; $into_blob_line_array[] = ":$lkey"; ${"lob_".$lobCounter} = oci_new_descriptor($this->conn,OCI_D_LOB); $bindingLob[$lkey] = ${"lob_".$lobCounter}; $lobCounter++; } $values_line_array = array_merge($colBindNameAray,$blob_values_line_array); $col_line = implode(',',$col_line_array); $values_line = implode(',',$values_line_array); $ret_blob_line = implode(',',$ret_blob_line_array); $into_blob_line = implode(',',$into_blob_line_array); $stmt = "INSERT INTO $tblName ($col_line) VALUES ($values_line) RETURNING $ret_blob_line INTO $into_blob_line"; $stmt_res = oci_parse($this->conn, $stmt); //echo "$stmt
"; if (!is_null($arrayCol)) { foreach ($arrayCol as $tkey => $tval) { oci_bind_by_name($stmt_res,":$tkey",$tval,strlen($tval)); //echo "t = :$tkey,$tval,". strlen($tval) . "
"; } } if (!is_null($arrayColNumber)) { foreach ($arrayColNumber as $nkey => $nval) { oci_bind_by_name($stmt_res,":$nkey",$nval); //echo "n = :$nkey,$nval
"; } } foreach ($arrayBlob as $lkey => $lval) { oci_bind_by_name($stmt_res,":$lkey",$bindingLob[$lkey],-1,OCI_B_BLOB); } $result = oci_execute($stmt_res, $this->execution_mode); if (!$result) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); } else { $lobCounter = 1; foreach ($arrayBlob as $lkey => $lval) { ${"lob_".$lobCounter}->save($lval); $lobCounter++; } } if (!is_null($stmt_res)):oci_free_statement($stmt_res);endif; return $result; } function checkProcedure ($pkgName, $procName, $owner) { $stmt = <<< sql SELECT 1 as NUM_PROC FROM all_procedures WHERE owner = '{$owner}' AND object_name = '{$pkgName}' AND procedure_name = '{$procName}' sql; $numProc = 0; $stmt_res = oci_parse($this->conn, $stmt); if (!oci_execute($stmt_res, OCI_DEFAULT)) { $e = oci_error($stmt_res); $this->last_error_msg = split("\n",$e['message']); } else { $this->nrows = oci_fetch_all($stmt_res,$result,null,null,$select_method); if ($this->nrows >0) { $numProc = 1; } } return $numProc; } } ?>