Handle stored procedure output parameter in codeigniter Handle stored procedure output parameter in codeigniter codeigniter codeigniter

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;}