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

    Oracle: PL/SQL- Store Procedure Un paio di aiuti:

    1) la procedura vi sembra corretta o c'è qualcosa che non va??
    2) all'interno della if devo fare in modo di salvare il record trovato perchè è anomalo, come faccio??

    ----------------------------------

    PROCEDURE ANTEPRIME_STALE
    AS

    ' dichiaro i cursori e le variabili

    DECLARE

    progressivo Recall45.colonna%type

    cursor c1 IS
    select colonna5 from Recall45 where rtrim(col_esito) is null or record_status='5';

    cursor c2 IS
    select * from recall_storico where colonna5= progressivo;

    BEGIN

    open c1
    FOR scheda IN c1
    Fetch c1 into progressivo;
    open c2
    If c2%found
    'qui se trova un record vuol dire che c'è un errore e devo recuperare l'id della scheda x verificarlo manualmente come faccio?
    End if
    Close c2
    UPDATE
    Recall45
    SET
    col_esito=null
    record_type='1'
    record_status='1'
    call_result='0'
    COMMIT;
    END LOOP;

    END PROCEDURE ANTEPRIME_STALE;


    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    se a te interessa solo l' ID, perche non usi:
    codice:
    cursor c2 IS 
    select CampoID from recall_storico where colonna5= progressivo;
    al posto della *?

    e magari ti metti il risultato in una tabella temporanea(oppure in una variabile matrice, ma non so se è possibile)..e poi vedi se nella tabella temporanea ci sono record ed eventualmente controlli gli id trovati

    altrimenti (altra idea così, a naso) qui:
    codice:
    If c2%found 
    'qui se trova un record vuol dire che 
    c'è un errore e devo recuperare 
    l'id della scheda x verificarlo manualmente
    come faccio? 
    End if
    metti un ciclo che ti legge tutti i record trovati e li inserisce sempre in una tabella temporanea o una variabile


    sai che posso aiutarti solo con idee...ma come codice



  3. #3
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    se a te interessa solo l' ID, perche non usi:
    codice:
    cursor c2 IS 
    select CampoID from recall_storico where colonna5= progressivo;
    al posto della *?

    e magari ti metti il risultato in una tabella temporanea(oppure in una variabile matrice, ma non so se è possibile)..e poi vedi se nella tabella temporanea ci sono record ed eventualmente controlli gli id trovati

    altrimenti (altra idea così, a naso) qui:
    codice:
    If c2%found 
    'qui se trova un record vuol dire che 
    c'è un errore e devo recuperare 
    l'id della scheda x verificarlo manualmente
    come faccio? 
    End if
    metti un ciclo che ti legge tutti i record trovati e li inserisce sempre in una tabella temporanea o una variabile


    sai che posso aiutarti solo con idee...ma come codice


    si,l'* mi è sfuggito...l'idea era quella di estrarre solo il campo che mi serve, ma poi mi riserve tutto iol record per fare l'update e come faccio??

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Elena78
    si,l'* mi è sfuggito...l'idea era quella di estrarre solo il campo che mi serve, ma poi mi riserve tutto iol record per fare l'update e come faccio??
    e allora sarebbe meglio la seconda proposta

    devi fare l'update DENTRO la if oppure nella if ti devi tirare fuori gli ID per modificare i valori e POI fare l'update?

    cmq, dentro la IF (If c2%found ) entra soltanto se trovi record (giusto?) quindi potresti mettere un ciclo FOR che va dal primo record all'ultimo estratto e di conseguenza : o ti tiri fuori il valore dell'id ad ogni iterazione del ciclo (se ti serve solo conoscere l'id per fare poi le modifiche) oppure fai le modifiche necessarie (sempre ad ogni iterazione del ciclo, quindi per ogni record trovato) correggendo l'errore e facendo l'update.

  5. #5
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    e allora sarebbe meglio la seconda proposta

    devi fare l'update DENTRO la if oppure nella if ti devi tirare fuori gli ID per modificare i valori e POI fare l'update?

    cmq, dentro la IF (If c2%found ) entra soltanto se trovi record (giusto?) quindi potresti mettere un ciclo FOR che va dal primo record all'ultimo estratto e di conseguenza : o ti tiri fuori il valore dell'id ad ogni iterazione del ciclo (se ti serve solo conoscere l'id per fare poi le modifiche) oppure fai le modifiche necessarie (sempre ad ogni iterazione del ciclo, quindi per ogni record trovato) correggendo l'errore e facendo l'update.

    Non devo correggere l'errore.
    Se la If trova qualcosa vuol dire che c'è una scheda in errore e devo semplicemente salvarmi il progressivo (colonna5) e ricevere una notifica via mail dell'errore.
    Se non trova nulla nella if allora deve correttamente fare l'update che segue..
    Mi sono sppieccata???
    Mi ma xchè non ho fatto la panettiera che mi riusciva meglio??

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Elena78
    Non devo correggere l'errore.
    Se la If trova qualcosa vuol dire che c'è una scheda in errore e devo semplicemente salvarmi il progressivo (colonna5) e ricevere una notifica via mail dell'errore.
    Se non trova nulla nella if allora deve correttamente fare l'update che segue..
    Mi sono sppieccata???
    Mi ma xchè non ho fatto la panettiera che mi riusciva meglio??
    ma smettila!

    allora, andiamo per ordine (se intanto riusciamo ad ottenere i valori degli ID bene, la notifica via mail poi si vede)

    Devi vedere se c'è un modo per fare questo:
    codice:
    If c2%found 
     Ciclo Per OgniRecord IN c2 
       Salva il valore di c2.Colonna5
     FineCiclo
     interrompi la stored 
     (o comunque fai in modo che
      non venga lanciata l'update
      perchè hai  trovato errori)
    End if
    dove salvare il valore devi vederlo tu (variabile, tabella, file di testo...)

    ammesso che sia possibile fare un ciclo di quel tipo.

    adesso vedo se trovo qualche esempio in rete

  7. #7
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    ma smettila!

    allora, andiamo per ordine (se intanto riusciamo ad ottenere i valori degli ID bene, la notifica via mail poi si vede)

    Devi vedere se c'è un modo per fare questo:
    codice:
    If c2%found 
     Ciclo Per OgniRecord IN c2 
       Salva il valore di c2.Colonna5
     FineCiclo
     interrompi la stored 
     (o comunque fai in modo che
      non venga lanciata l'update
      perchè hai  trovato errori)
    End if
    dove salvare il valore devi vederlo tu (variabile, tabella, file di testo...)

    ammesso che sia possibile fare un ciclo di quel tipo.

    adesso vedo se trovo qualche esempio in rete

    Io non devo interrompere la store.. semplicemente salvare il valore di c2.colonna5 che ha dato errore e procedere fino a che non ne trova altri,
    dopo di che uscire dalla if e fare l'update delle schede corrette...
    Te capì??
    Il ciclo così si può fare si..devo salvare solo in un file di testo tutti i progressivi in errore, ovvero rientrati in c2... e tutto questo devo riceverlo via mail..

    Grazie Gio'!! Sei un tesoro!!

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    prova a veder qui nella sezione CONTROLLO DI FLUSSO

    adesso vedo se trovo altro

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Elena78
    Io non devo interrompere la store.. semplicemente salvare il valore di c2.colonna5 che ha dato errore e procedere fino a che non ne trova altri,
    dopo di che uscire dalla if e fare l'update delle schede corrette...
    Te capì??
    Il ciclo così si può fare si..devo salvare solo in un file di testo tutti i progressivi in errore, ovvero rientrati in c2... e tutto questo devo riceverlo via mail..

    Grazie Gio'!! Sei un tesoro!!
    ok, ho capito

    quindi anche se trovi errori (quidni record in c2) devi solo memorizzarli e poi fare l'update ...( spero )

    se è così il ciclo potrebbe andare bene visto che non va avanti finchè non hai "ciclato" tutti i record trovati in c2

    se risolvi (o se non ti servono + info) fammi sapere...magari evito di rivoltare internet

  10. #10
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da darkblOOd
    ok, ho capito

    quindi anche se trovi errori (quidni record in c2) devi solo memorizzarli e poi fare l'update ...( spero )

    se è così il ciclo potrebbe andare bene visto che non va avanti finchè non hai "ciclato" tutti i record trovati in c2

    se risolvi (o se non ti servono + info) fammi sapere...magari evito di rivoltare internet

    si ma il problema è salvare in qualche modo i risultati di c2..


    no no non rivoltare internet che mi sono già scaricata decine di manuali..

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.