Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Procedura rekurencyjna + odpowiednik foreach i array[]
barthpl
post
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:
  1. <?php
  2. $result = mysql_query( "SELECT * FROM forum WHERE parentId = '$forumId'" );
  3. while( ($row =) != false )
  4. mysql_query( "CALL forumAddedPost($row[forumId])" );
  5. ?>


edit --> dodałem tytuł i poprawiłem zapytanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował barthpl 1.09.2008, 16:33:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
barthpl
post
Post #2





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 ??
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.10.2025 - 23:23