我在调用具有两个OUT参数的存储过程时遇到问题。我无法访问它们。
这是我程序的第一行:
PROCEDURE `validate_reservation`(IN people INT, IN r_date DATETIME,IN place_id INT,IN max_people INT,IN more_people TINYINT(1),OUT r_status CHAR(20),OUT message CHAR(100))
以下是我从Laravel 5中称呼它的方式:
DB::statement("call validate_reservation(4,'2016-04-26 20:30',1,10,1,$status,$message)");
我不知道是否必须传递两个空变量,它们将转换输出的值,或者如果这是语句的返回值。
如果我传递两个空变量,Laravel告诉我它们没有被定义。如果我没有通过它们,Laravel告诉我程序正在等待7个参数而不是5个。
答案 0 :(得分:3)
使用OUT参数,您可以处理MySQL变量 - 这些变量以@为前缀。
因此,请使用@status, @message
代替$status, $message
。此外,您可能希望使用绑定来传递其他值。
在任何情况下,这些都不会填充PHP变量。如果你想用PHP获取它们,你需要选择它们,例如SELECT @status, @message
使用DB::select
。
答案 1 :(得分:0)
这种方式对我有用:
DB::select("call validate_reservation(4,'2016-04-26 20:30',1,10,1,@status,@message)");
$results = DB::select('select @status as status, @message as message ');
return dd($results[0]->message);