Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    problema con stored procedure che sembra andare in loop (aiuto!)

    Ciao a tutti,

    stiamo lavorando su un database che ha le seguenti tabelle:
    - _catalogo
    - _catalogo_categorie

    la tabella _catalogo ha un campo id_categoria che fa riferimento alla tabella _catalogo_categorie.
    la tabella _catalogo_categorie è fatta ad albero, ovvero ha un campo id_genitore che refenzia un altro id_categoria.

    Ora, abbiamo bisogno di calcolare, dato un determinato id_categoria ID, la somma di:
    - gli oggetti di _catalogo che abbiano ID come id_categoria
    - gli oggetti di _catalogo che abbiamo come id_categoria un successore di ID

    Ovviamente non sappiamo quale sia il livello di profondità che dobbiamo raggiungere per trovare le foglie, che varia di categoria in categoria.

    Abbiamo usato questa procedura ma sembra andare in loop, sapete darci una mano??

    Grazie!


    codice:
    CREATE DEFINER=`root`@`192.168.1.2` PROCEDURE `_catalogo_calcolaTotaleProdottiRamoCategorie`(   in idCategoria int   ,   out totaleProdotti int ) BEGIN    declare idFiglio int;   declare subTotale int;   DECLARE finito INT default 0;    DECLARE cursore CURSOR FOR SELECT _catalogo_categorie.id     FROM _catalogo_categorie WHERE _catalogo_categorie.id_genitore = idCategoria AND _catalogo_categorie.id > 0;    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'     SET finito = 1;    set idFiglio = 0;   set subTotale = 0;    SELECT coalesce( count(_catalogo.id) , 0) FROM _catalogo WHERE _catalogo.id_categoria = idCategoria INTO totaleProdotti;    OPEN cursore;    ciclo: WHILE NOT finito DO      FETCH cursore INTO idFiglio;      CALL _catalogo_calcolaTotaleProdottiRamoCategorie( idFiglio , subTotale );      SELECT coalesce( subTotale , 0 ) + coalesce( totaleProdotti , 0 ) INTO totaleProdotti;    END WHILE ciclo;  END
    - Sean von Drake

    http://www.videoarts.eu/ realizzazione siti web bologna

    "Sono un servitore del fuoco segreto, e reggo la Fiamma di Anor."

  2. #2
    ----------------------------------------------------
    REGOLAMENTO [Leggere prima di postare]
    [REGOLAMENTO SEZIONE "DATABASE"]
    Versione 1.0
    Aggiornato al 1/3/2010
    ...

    4) Mettere fra parentesi quadre il nome del database utilizzato con una breve descrizione del problema

    I titoli generici non aiutano chi dovrebbe darvi una mano e non facilitano la ricerca .
    Esempi:

    [MySQL] confronto tra date
    [SQL Server] creazione stored procedure
    [PostgreSQL] creazione trigger
    [Oracle] restore di un database
    [DB2] schedulazione backup
    etc
    ----------------------------------------------------

  3. #3
    scusate, colpa mia ce l'avevo in mente e per la fretta ho postato senza metterlo

    adesso non me lo fa più modificare...
    - Sean von Drake

    http://www.videoarts.eu/ realizzazione siti web bologna

    "Sono un servitore del fuoco segreto, e reggo la Fiamma di Anor."

  4. #4
    quindi questa cosa rimarrà avvolta nel mistero

  5. #5
    boh ho provato a scrivere all'amministratore, altrimenti riposto stavolta col tag
    - Sean von Drake

    http://www.videoarts.eu/ realizzazione siti web bologna

    "Sono un servitore del fuoco segreto, e reggo la Fiamma di Anor."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.