Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [PL/SQL] procedure

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    [PL/SQL] procedure

    ciao a tutti, ho creato un db sul parlamento, contenente ovviamente le tabelle deputati e senatori. in pratica mi si chiede di creare una procedura che stampi il nome e cognome dei parlamentari e il numero dei parlamentari.

    la procedura che ho creato con sqldeveloper è la seguente:

    codice:
    SET SERVEROUTPUT ON;
    
    CREATE OR REPLACE PROCEDURE STAMPANOMA_NUMERO AS 
    CURSOR c1 IS
      SELECT * FROM REPOSITORYADM.DEPUTATI;
    CURSOR c2 IS
      SELECT * FROM REPOSITORYADM.SENATORI;
    deputato c1%rowtype;
    senatore c2%rowtype;
    counter integer(4) := 0;
    BEGIN
      counter := 0;
      OPEN c1;
      LOOP
        FETCH c1 INTO deputato;
        EXIT WHEN c1%notfound;
        dbms_output.put_line(deputato.nome, deputato.cognome);
        counter := counter + 1;
      END LOOP;
      CLOSE c1;
      OPEN c2;
      LOOP
        FETCH c2 INTO senatore;
        EXIT WHEN c2%notfound;
        dbms_output.put_line(senatore.nome, senatore.cognome);
        counter := counter + 1;
      END LOOP;
      CLOSE c2;
      dbms_output.put_line('i parlamentari sono ', counter, '.');
    END STAMPANOMA_NUMERO;
    in pratica mi viene visualizzato nelle istruzioni dove si incrementa counter, il seguente messaggio di errore:

    Errore: ORA-00922: opzione mancante o non valida

    cosa c'è che non va? mi sembra di aver fatto bene ma non mi fa eseguere la procedura.

  2. #2

    Moderazione

    Sposto in Database.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    nessuno che mi aiuta a cpire dov'è l'errore???

  4. #4
    Così non restituisce errori, prova:

    codice:
    CREATE OR REPLACE PROCEDURE SF_APPPRD.STAMPANOMA_NUMERO AS 
    CURSOR c1 IS
      SELECT '' as nome, '' as cognome FROM dual;--REPOSITORYADM.DEPUTATI;
    CURSOR c2 IS
      SELECT '' as nome, '' as cognome FROM dual;--REPOSITORYADM.SENATORI;
    deputato c1%rowtype;
    senatore c2%rowtype;
    counter integer(4) := 0;
    BEGIN
      counter := 0;
      OPEN c1;
      LOOP
        FETCH c1 INTO deputato;
        EXIT WHEN c1%notfound;
        dbms_output.put_line(deputato.nome||'-'||deputato.cognome);
        counter := counter + 1;
      END LOOP;
      CLOSE c1;
      OPEN c2;
      LOOP
        FETCH c2 INTO senatore;
        EXIT WHEN c2%notfound;
        dbms_output.put_line(senatore.nome||'-'||senatore.cognome);
        counter := counter + 1;
      END LOOP;
      CLOSE c2;
      dbms_output.put_line('i parlamentari sono '||counter||'.');
    END STAMPANOMA_NUMERO;
    /
    Ciao
    Mik

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    si e funziona. grazie 1000.

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.