2
存儲過程OUT參數調用MySQL的存儲過程看起來類似:通過Rails的
CREATE PROCEDURE `manager`(IN amount decimal(9,2), IN list text, IN acc_id int(11), OUT return_code int(1))
BEGIN
DECLARE exit handler for sqlexception, sqlwarning
BEGIN
set return_code = 1;
rollback;
END;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
--my code
set return_code = 0;
END
從軌道模型的方法是:
return_code = -1
return_code = self.connection.execute("call manager(#{amount}, '#{list}', #{acc_id}, #{return_code})")
但是,這將引發一個錯誤:
ActiveRecord::StatementInvalid: Mysql2::Error: OUT or INOUT argument 4 for routine staging.manager is not a variable or NEW pseudo-variable in BEFORE trigger: call manager(2222, 'list', 2, -1)
在從rails調用存儲過程時如何傳遞OUT參數需要一些幫助。
檢查:[http://stackoverflow.com/q/ 7480579/1316440](http://stackoverflow.com/q/7480579/1316440) – wchiquito
謝謝。這工作。根據我的代碼,我修改了一下。我已經發布了下面的答案。 – codevj