2013-08-13 1 views
8

Non riesco a chiamare una stored procedure in CodeIgniter. Tuttavia, quando chiamo la procedura direttamente in MySQL, funziona. Perché non funziona quando lo chiamo in CodeIgniter?Come chiamare una stored procedure in CodeIgniter?

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc`() 
LANGUAGE SQL 
NOT DETERMINISTIC 
CONTAINS SQL 
SQL SECURITY DEFINER 
COMMENT '' 
BEGIN 
    declare name1 TEXT; 
    declare id1 TEXT; 
    select name,id into name1,id1 from my_tbl WHERE name='sam'; 
    select * from my_tbl; 
    select name1,id1; 
END 

risposta

19

Penso che si stia utilizzando la seguente procedura per chiamare.

$this->db->call_function('test_proc'); 

È sbagliato. Solo le procedure predefinite possono essere richiamate utilizzando questo metodo. Per chiamare procedure definite da te, devi andare con

$this->db->query("call test_proc()"); 
2

Per Oracle procedured ecco un modo semplice per chiamare

$rsponse = ''; 
    $s = oci_parse($this->db->conn_id, "begin packageName.procedureName(:bind1,:bind2,:bind3,:bind4,:bind5); end;"); 
       oci_bind_by_name($s, ":bind1", $data['fieldOne'],300); 
       oci_bind_by_name($s, ":bind2", $data['fieldTwo'],300); 
       oci_bind_by_name($s, ":bind3", $data['fieldThre'],300); 
       oci_bind_by_name($s, ":bind4", $data['fieldFour'],300); 
       oci_bind_by_name($s, ":bind4", $response,300); 
       oci_execute($s, OCI_DEFAULT); 
echo $message; 

Nella procedura di esempio sopra accettare quattro argomenti come input e un parametro come uscita. in caso di procedura di chiamata diretta rimuovere "nomePacchetto". Ecco fatto ...