Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    [PL/SQL] non riesco a capire. aiuto

    ciao a tutti, sto creando la seguente funzione in pl/sql:

    codice:
    create or replace FUNCTION REPOSITORYADM.NOTE_SPESE_FUNC 
    (
      PARLID IN VARCHAR2  
    ) RETURN REPOSITORYADM.NOTA_SPESA_VARRAY IS 
    
    NOTA REPOSITORYADM.NOTA_SPESA_VARRAY;
    INDICE NUMBER := 0;
    
    CURSOR C1 IS
      SELECT PARL_ID, LEGIS_NUM, SUM(ALLOGGIO), SUM(viaggio), SUM(sanitarie), SUM(sicurezza), SUM(telefono), SUM(altro), SUM(TOT)
      FROM REPOSITORYADM.NOTE_SPESE
      WHERE PARL_ID = PARLID
      GROUP BY LEGIS_NUM;
      
    RIGA C1%ROWTYPE;
    
    BEGIN
      OPEN C1;
      LOOP
        FETCH C1 INTO RIGA;
        EXIT WHEN C1%NOTFOUND;
        NOTA(INDICE).LEGISLATURA := RIGA.LEGIS_NUM;
        NOTA(INDICE).ALLOGGIO := RIGA.ALLOGGIO;
        NOTA(INDICE).VIAGGIO := RIGA.VIAGGIO;
        NOTA(INDICE).SANITARIE := RIGA.SANITARIE;
        NOTA(INDICE).SICUREZZA := RIGA.SICUREZZA;
        NOTA(INDICE).TELEFONO := RIGA.TELEFONO;
        NOTA(INDICE).ALTRO := RIGA.ALTRO;
        NOTA(INDICE).TOT := RIGA.TOT;
        INDICE := INDICE + 1;
      END LOOP;
      
      DBMS_OUTPUT.PUT_LINE('IJUNWEICUENI');
      
      RETURN NOTA;
    END NOTE_SPESE_FUNC;
    (non fate caso alla stringa che dovrebbe essere stampata a video). quando compilo la funzione mi dà i seguenti errori:

    Errore(23,5): PL/SQL: Statement ignored
    Errore(23,35): PLS-00302: il componente 'ALLOGGIO' deve essere dichiarato
    Errore(24,5): PL/SQL: Statement ignored
    Errore(24,34): PLS-00302: il componente 'VIAGGIO' deve essere dichiarato
    Errore(25,5): PL/SQL: Statement ignored
    Errore(25,36): PLS-00302: il componente 'SANITARIE' deve essere dichiarato
    Errore(26,5): PL/SQL: Statement ignored
    Errore(26,36): PLS-00302: il componente 'SICUREZZA' deve essere dichiarato
    Errore(27,5): PL/SQL: Statement ignored
    Errore(27,35): PLS-00302: il componente 'TELEFONO' deve essere dichiarato
    Errore(28,5): PL/SQL: Statement ignored
    Errore(28,32): PLS-00302: il componente 'ALTRO' deve essere dichiarato
    Errore(29,5): PL/SQL: Statement ignored
    Errore(29,30): PLS-00302: il componente 'TOT' deve essere dichiarato

    perchè succede questo?? e, soprattutto, perchè solo con le variabili number mentre la legislatura non lo vode come un errore???

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Penso perché la colonna ALLOGGIO (e le altre) non esistono nella query. Se fai attenzione esiste la colonna SUM(ALLOGGIO) non ALLOGGIO ... Probabilmente dovrai dare un nome ed usare quello

    SUM(ALLOGGIO) TOTALLOGGIO

    e usare TOTALLOGGIO


    P.S. Il titolo della discussione, come sai, deve avere un senso ...

    P.P.S. Stai calcolando i rimborsi dei parlamentari :-) ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    sto facendo un db che gestisce il parlamento e tra le funzione c'è questa che retituisce la spesa in una nota spese di un parlamentare passato in input.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi auguro sia una esercitazione scolastica ... comunque leggi la risposta precedente

    Non conosco bene PL/SQL ma oltre ad usare il nome della colonna indicata con

    SUM(ALLOGGIO) TOTALLOGGIO

    mi sembra tu possa usare anche

    SUM_ALLOGGIO
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.