2013-08-13 39 views
8

CodeIgniterでストアドプロシージャを呼び出すことができません。しかし、私がMySQLで直接プロシージャを呼び出すと、動作します。 CodeIgniterで呼び出すと、なぜそれは動作しませんか?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 

答えて

19

私はプロシージャを呼び出すために次の方法を使用していると思います。

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

間違っています。このメソッドを使用してデフォルトのプロシージャのみを呼び出すことができます。あなたによって定義された手順を呼び出すことが は、Oracleがここproceduredについて

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

に行かなければならない上記の例の手順では

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

を呼び出すための簡単な方法で入力と1つのパラメータとして、次の4つの引数を受け入れます出力として出力する。直接呼び出しプロシージャの場合は 'packageName'を削除してください。 これは...

関連する問題