![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Czy ta procedura jest poprawna? Jej założeniem jest zwiększenie licznika w forum i we wszystkich rodzicach.
Kod DELIMITER // DROP PROCEDURE IF EXISTS `forumAddedPost` // CREATE PROCEDURE `forumAddedPost`( IN argForumId INT ) BEGIN UPDATE forum SET postNo = postNo +1 WHERE forumId = argForumId; DECLARE varParentId INT DEFAULT 0; SELECT parentId FROM forum WHERE forumId = argForumId INTO varParentId; IF varParentId != 0 THEN CALL forumAddedPost( varParentId ); END IF; END // DELIMITER; Wyświetla się mi błąd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE varParentId INT DEFAULT 0; SELECT parentId FROM forum WHERE foru' at line 9 A i jeszcze jedno jaki będzie odpowiednik polecenia sql równoważnego z takim oto poleceniem PHP:
edit --> dodałem tytuł i poprawiłem zapytanie ![]() Ten post edytował barthpl 1.09.2008, 16:33:40 -------------------- Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
1. Deklaruj zmienne na początku procedury.
2. http://dev.mysql.com/doc/refman/5.0/en/cursors.html -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak się jeszcze zapytam. W jaki sposób interpretowana jest procedura przez MySQL?? Chciałbym wiedzieć czy jeżeli w procedurze mam kilka zapytań to czy są wykonywane jedna po drugiej jako jedno polecenie MySQL czy może się zdążyć, iż pomiędzy poszczególnymi zapytaniami zostanie wykonane jakieś inne zapytanie??
Obrazowo mówiąc procedury 1 i 2 mają zapytanie A i B. W jakiej kolejności zostaną obsłużone zapytanie wysłane w jednym momencie (procedura1, zapytanie G, procedura 2). Czy będzie to procedura1.A, procedura1.B, G, procedura2.A, procedura2.B czy raczej może się zdarzyć tak: procedura1.A, G, procedura2.A, procedura1.B, procedura2.B ?? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat Chciałbym wiedzieć czy jeżeli w procedurze mam kilka zapytań to czy są wykonywane jedna po drugiej jako jedno polecenie MySQL czy może się zdążyć, iż pomiędzy poszczególnymi zapytaniami zostanie wykonane jakieś inne zapytanie?? Może się tak zdażyć. Musisz wykorzystać tranzakcje. I pamiętaj, że tranzakcje działają tylko na tabelach InnoDB - na MyISAM nie działają ( bez wyrzucania jakichkolwiek ostrzeżeń, po prostu są ignorowane ) Ten post edytował Kicok 2.09.2008, 08:37:40 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 05:00 |