2016-11-14 9 views
0

私はデータベースとしてmysqlを使用しています。私は私のモデルからストアドプロシージャを呼び出しました。以下は私のモデル関数です。codeigniterからストアドプロシージャを呼び出すことができません

public function call_sp() 
    { 
     $query = $this->db->query("call SPInsertEventTran()"); 
     return $query->result(); 
    } 

保存手順は次のとおりです。

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `SPInsertEventTran`(
IN IN_event_name varchar(45), 
IN IN_date date, 
IN IN_place varchar(45), 
IN IN_starting_time time, 
IN IN_end_time time, 
IN IN_no_of_cams int, 
IN IN_booked_or_not varchar(45), 
IN IN_customer_id int, 
IN IN_package_id int 


) 
BEGIN 

iNSERT iNTO event(event_name,date,place,starting_time,end_time,no_of_cams,booked_or_not,customer_id,package_id) 
     values (IN_Event_Name,IN_place,IN_starting_time,IN_end_time,IN_no_of_cams,IN_booked_or_not, 
      IN_customer_id,IN_package_id); 

insert into quotation (camera_charges,other,discount,event_id) 
    select ev.no_of_cams*pg.charge_per_cam ,null,null,ev.id 
    from event ev 
    inner join package pg on ev.package_id=pg.id 
    where ev.id=(select max(id) from event); 
END 

このようなエラーが発生します。

Error Number: 1318 
Incorrect number of arguments for PROCEDURE mydb.SPInsertEventTran; expected 9, got 0 
call SPInsertEventTran() 
Filename: F:\wamp\www\eventmanagementsystem\system\database\DB_driver.php 
Line Number: 331 

誰でもエラーを修正するのを手伝ってもらえますか?

答えて

1

あなたはこのように、CALLメソッドのすべてのパラメータを渡す必要があります。

$sql = "CALL call SPInsertEventTran(?,?,?,?,?,?,?,?,?)"; 

$this->db->query($sql,[ 
    'Event_Name' => 'value', 
    'place'   => 'value' 
    'starting_time' => 'value' 
    'end_time'  => 'value' 
    'no_of_cams' => 'value' 
    'booked_or_not' => 'value' 
    'customer_id' => 'value' 
    'package_id' => 'value' 
]); 
関連する問題