Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana]Problem z wywołaniem procedury składowanej mysql
askone
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


Hej

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 (IMG:style_emoticons/default/smile.gif)

Mam coś takiego:
  1. DROP PROCEDURE IF EXISTS sp_NewAuthor; DELIMITER //
  2. CREATE PROCEDURE sp_NewAuthor ( IN fName VARCHAR(25), IN lName VARCHAR(50), OUT result INT)
  3. MODIFIES SQL DATA
  4. BEGIN
  5. IF fName <> '' AND lName <> '' THEN
  6. IF NOT EXISTS (SELECT id FROM authors WHERE firstName = fName AND lastName = lName) THEN
  7. INSERT INTO authors VALUES (NULL, fName, lName);
  8. SELECT LAST_INSERT_ID() INTO result;
  9. END IF;
  10. END IF;
  11. END//
  12. 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:
  1. $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ć (IMG:style_emoticons/default/smile.gif)

Z góry dziękuje za odpowiedzi i wszelkie sugestie (IMG:style_emoticons/default/smile.gif)

Edit:
Udało mi się zlikwidować błąd mysql poprzez zapisanie query w poniższy sposób:
  1. $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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował fly474 3.03.2010, 20:57:14
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.06.2026 - 18:42