Avatar billede fixxxer Nybegynder
08. september 2006 - 17:31 Der er 6 kommentarer og
1 løsning

MySQL 5 og Stored Procedures recursive

Jeg har installeret MySQL 5.0 for at eksperimentere med de nye muligheder for bl.a. stored procedures.

Jeg ved intet om at skrive stored procedures der kan kalde sig selv i MySQL, og jeg synes ikke jeg kan finde nogen gode eksempler omkring emnet på google.

Er der nogen, måske bare generelt, SQL hajer der kan belyse emnet for mig, måske med et lille eksempel?
Avatar billede arne_v Ekspert
09. september 2006 - 02:01 #1
nu er jeg meget skeptisk overfor rekursive SP'ere

men her er et (velkendt) eksempel (som absolut ikke bør laves som SP):

DELIMITER //
CREATE PROCEDURE fac(INOUT n INTEGER)
BEGIN
    DECLARE tmp INTEGER;
    IF n > 1 THEN
        SET tmp = n - 1;
        CALL fac(tmp);
        SET n = n*tmp;
    ELSE
        SET n = 1;
    END IF;
END//
CREATE PROCEDURE fac2(IN n INTEGER)
BEGIN
    DECLARE tmp INTEGER;
    SET tmp = n;
    CALL fac(tmp);
    SELECT tmp;
END//
DELIMITER ;
SET MAX_SP_RECURSION_DEPTH=100;
CALL FAC2(7);
Avatar billede fixxxer Nybegynder
09. september 2006 - 12:28 #2
Jeg kan næsten forstå på dig, at sådanne kald ikke bør skrives i MySQL, men i et andet scriptsprog der foretager de rekursive kald?
Avatar billede arne_v Ekspert
09. september 2006 - 15:32 #3
ja

i de fleste tilfælde

men der er sikkert udtagelser

prøvt evt. at forklare hvis du vil bruge det til
Avatar billede fixxxer Nybegynder
09. september 2006 - 16:52 #4
Det var egenlig i den tro, at "bearbejde" dataene til fx forum-kategori-hiraki (ala eksperten), ville være mere hensigtsmæssigt end at afvikle mange individuelle kald til databasen.

Men selvfølgelig er det ikke altid den rigtige vej frem.

Dog vil jeg tro at for Oracle er det barnemad, så spørgsmålet er bare om MySQL på et eller andet tidspunkt vil kunne døje de samme "tæsk".
Avatar billede arne_v Ekspert
09. september 2006 - 20:58 #5
hvis du kan erstatte et kald fra app til db med et rekursict SP kald, så
vil jeg sige at det er værd at undersøge om det rekursive SP kald er bedre

det er ikke sikkert, men værd at undersøge nærmere

men fac ...

:-)
Avatar billede fixxxer Nybegynder
02. oktober 2006 - 08:40 #6
Put et svar, så du kan få point.

Jeg kom aldrig videre med det, men det er sikkert noget der bliver aktuelt en dag.
Avatar billede arne_v Ekspert
02. oktober 2006 - 13:07 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester