Handle stored procedure output parameter in codeigniter
use CodeIgniter Transactions
$this->db->trans_start();$this->db->query('AN SQL QUERY...');$this->db->query('ANOTHER QUERY...');$this->db->query('AND YET ANOTHER QUERY...');$this->db->trans_complete();
example:
$SQL = "call UPDATE(" . $ID."," . $this->db->escape($data["NAME"])."," // input . $this->db->escape($data["DESCRIPTION"])."," // input . " @out1" ."," // output . " @out2" //output .");"; $this->db->trans_start(); $this->db->query($SQL); // not need to get output $query = $this->db->query("SELECT @out1 as row_1, @out2 as row_2"); $this->db->trans_complete(); $result = array(); if($query->num_rows() > 0) $result = $query->result_array(); print_r($result);
$out='';$query ="begin register_new_user('" . $email . "','" .$name. "','".$lname ."','". $pword."','" . $states . "',:out); end;"; $stmt = oci_parse($this->db->conn_id, $query ); oci_bind_by_name($stmt, ":out", $out,300); oci_execute($stmt); echo $out;
its working for me .
Working Example!
--> SP
CREATE PROCEDURE calculateStock(IN itemId INT(10), OUT stock INT(10))BEGIN DECLARE purchased INT(10); DECLARE sold INT(10); SET purchased = (SELECT SUM(purchase_rows.qty) AS purchased FROM purchase_rows WHERE template_id = item_id); SET sold = (SELECT SUM(sale_rows.qty) AS sold FROM sale_rows WHERE template_id = item_id); SET stock = purchased - sold; SELECT stock;END
--> Model
public function getStock($item_id){ $query = "CALL calculateStock(?, @stock);"; $parameters = array($item_id); $result = $this->db->query($query, $parameters); mysqli_next_result($this->db->conn_id); //Important Line return $result->row()->stock;}