Wydaje mi się, że rzuciłem się z motyką na słońce, ale chciałem postępować tak jak zawsze robię przy bazach MSSQL i C#...
Zachciało mi się w aplikacji korzystać z procedur składowanych w bazie mysql. Procedury te pobierają odpowiednie parametry po czym zwracają wynik działania - I tutaj pojawia się problem

Mam coś takiego:
DROP PROCEDURE IF EXISTS sp_NewAuthor; DELIMITER // CREATE PROCEDURE sp_NewAuthor ( IN fName VARCHAR(25), IN lName VARCHAR(50), OUT result INT) MODIFIES SQL DATA BEGIN IF fName <> '' AND lName <> '' THEN IF NOT EXISTS (SELECT id FROM authors WHERE firstName = fName AND lastName = lName) THEN INSERT INTO authors VALUES (NULL, fName, lName); SELECT LAST_INSERT_ID() INTO result; END IF; END IF; END// DELIMITER ;
I to działa jeśli wywołuję z poziomu mySQL'a.
Ponieważ aplikacja powstaje w oparciu o framework Kohana korzystam z klasy Database i metody query. Robię to tak:
$this->db->query('call sp_NewAuthor(?, ?, $result)', $fName, $lName)
Oczywiście w zmiennych $fName i $lName mam właściwe wartości.
W odpowiedzi dostaję błąd:
There was an SQL error: OUT or INOUT argument 3 for routine books.sp_NewAuthor is not a variable or NEW pseudo-variable in BEFORE trigger - call sp_NewAuthor('jacek', 'popielczyk', $result)
Wiem, że to z mySQL ale brakuje mi już pomysłów jak to ugryźć - może ktoś już spotkał się z takim problemem i wie jak go rozwiązać

Z góry dziękuje za odpowiedzi i wszelkie sugestie

Edit:
Udało mi się zlikwidować błąd mysql poprzez zapisanie query w poniższy sposób:
$this->db->query('call sp_NewAuthor(?, ?, @result)', $fName, $lName)
Niestety gdy wyświetlam wartość zwracaną poprzez var_dump zawsze otrzymuję 0, pomimo iż powinienem otrzymać id wstawionego rekordu. Może teraz ktoś ma jakieś pomysłu
