Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535

    Store Procedure in PL-SQL

    Ho una Tabella x che racchiude un elenco di sottotabelle y (alcune "attive", altre no)

    Per ogni tabella attiva bisogna aggiornare alcuni campi, ma prima di aggiornarli è necessario verificare nella tabella "storico" -che chiamerò z - (che aracchiude tutti i dati di tutte le tabelle y), se i valori sono taluni corretti.

    Dunque : mi servono 3 cursori che estraggono tre tipi di dati

    1° cursore mi estrae dalla tabella x tutte le tabelle y aventi il flag attivo

    2° cursore mi estrae per ogni tabella x tutti i record aventi il campo PIPPO='5'

    3° cursore mi controlla che ogni record di ogni tabella y esista nella tabella Z

    Una volta definiti i cursori dovrei aggiornare i record.
    Prima di aggiornarli devo effettuare un controllo sulla tabella Z.


    1° passo FOR tabella_attiva IN c1 LOOP

    FOR record IN c2 LOOP

    e qui dovrei effettuare il controllo di ogni record estratto in c2 che sia presente nella tabella Z

    Come diavolo faccio??
    Qualcuno mi aiuti!!

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    :master: premesso che non ho capito bene...

    ma leggendo quello che hai scritto:

    FOR record_y IN z LOOP ?

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    odio il plsql

    FOR record IN c2 LOOP

    declare
    uncampo varchar2(30);
    begin
    select ilcampo into uncampo
    from Z where che_ne_so = record.colonna;
    -- qui metti quello che serve
    exception
    when no_data_found then
    -- non ha trovato il record in Z
    end;

    end loop;

    per una cosa semplice si deve mettere un blocco innestato ( )

  4. #4
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    :master: premesso che non ho capito bene...

    ma leggendo quello che hai scritto:

    FOR record_y IN z LOOP ?

    non ho capito.. e forse oggi ho cozzato troppo la testa.. perdonami..mi sa che mi mancano un po' di nozioni teoriche..

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da floyd
    odio il plsql

    FOR record IN c2 LOOP

    declare
    uncampo varchar2(30);
    begin
    select ilcampo into uncampo
    from Z where che_ne_so = record.colonna;
    -- qui metti quello che serve
    exception
    when no_data_found then
    -- non ha trovato il record in Z
    end;

    end loop;

    per una cosa semplice si deve mettere un blocco innestato ( )


    addirittura!

    cioè floyd, fammi capire: va "contro" lo standard di una SELECT ~ WHERE normalissima?

  6. #6
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da floyd
    odio il plsql

    FOR record IN c2 LOOP

    declare
    uncampo varchar2(30);
    begin
    select ilcampo into uncampo
    from Z where che_ne_so = record.colonna;
    -- qui metti quello che serve
    exception
    when no_data_found then
    -- non ha trovato il record in Z
    end;

    end loop;

    per una cosa semplice si deve mettere un blocco innestato ( )

    :tongue: GRAZIE :bubu: ORA PROVO

  7. #7
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da floyd
    odio il plsql

    FOR record IN c2 LOOP

    declare
    uncampo varchar2(30);
    begin
    select ilcampo into uncampo
    from Z where che_ne_so = record.colonna;
    -- qui metti quello che serve
    exception
    when no_data_found then
    -- non ha trovato il record in Z
    end;

    end loop;

    per una cosa semplice si deve mettere un blocco innestato ( )


    Non mi torna una cosa:

    1)select ilcampo into uncampo ???
    Seleziono un campo di un campo nella tabella z

    :master: :master:

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    il motivo è fare una select per vedere se esiste un record che serve
    se non esiste va in no_data_found
    per la select devi usare into necessariamente

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