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

    ORACLE PL/SQL : recuperare valore di un campo da una variabile

    Definisco questo cazzarola di cursore:

    cursor c1 IS
    select * from miatabellag where colonna1 is not null and colonna2=5;


    poi dichiaro la variabile riga che eredita la struttura dei risultati del cursore in questo modo:

    riga c1%ROWTYPE;

    ma xchè cacchio in fase di debug quando mi posiziono su riga x vederne il contenuto mi dice "Undeclared identifier "riga" "?? :master:

    Dove sbaglio??

    Grazie

    Elena

  2. #2
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Niente???



  3. #3
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212

    Re: ORACLE PL/SQL : recuperare valore di un campo da una variabile

    Originariamente inviato da Elena78
    Definisco questo cazzarola di cursore:

    cursor c1 IS
    select * from miatabellag where colonna1 is not null and colonna2=5;


    poi dichiaro la variabile riga che eredita la struttura dei risultati del cursore in questo modo:

    riga c1%ROWTYPE;

    ma xchè cacchio in fase di debug quando mi posiziono su riga x vederne il contenuto mi dice "Undeclared identifier "riga" "?? :master:

    Dove sbaglio??

    Grazie

    Elena
    devi dimensionare dua variabili, una per ogni campo che vuoi recuperare:
    codice:
    VarCampoColonna1 miatabellag.colonna1%TYPE
    VarCampoColonna2 miatabellag.colonna2%TYPE

    ecco un esempio:
    Di seguito un esempio di uso di cursori; questo programma estrae da una tabella le donne nubili e le scrive in una tabella temporanea:



    DECLARE

    v_nome dipendenti.nome%TYPE;

    v_cognome dipendenti.cognome%TYPE;

    CURSOR dipendenti_donne_single IS

    SELECT nome,cognome

    FROM dipendenti

    WHERE Sesso = ‘F’

    AND coniugato = ‘N’;

    BEGIN

    OPEN dipendenti_donne_single;

    LOOP

    FETCH dipendenti_donne_single INTO v_nome,v_cognome;

    INSERT INTO temp VALUES (v_nome,v_cognome);

    EXIT WHEN dipendenti_donne_single%NOTFOUND;

    END LOOP;

    CLOSE dipendenti_donne_single;

    END;

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    non serve dichiarare il record
    cmq riga miatabellag%ROWTYPE;

  5. #5
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da floyd
    non serve dichiarare il record
    cmq riga miatabellag%ROWTYPE;

    perchè dici che non serve dichiarare rowtype?? Il manuale dice proprio di si.. :master:

    @Dark: grazie, ora provo...

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se fai un for rec in cursname loop non serve dichiarare rec

  7. #7
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    DARK:
    Nell'esempio che hai postato associ ad una variavile il tipo di dato del campo.
    Ma con ROWTYPE si definisce una variabile che contiene un intero recordo del corsure.

    Io ho bisogno di recuperare più di un campo.
    Quindi salvo il record nella variabile riga e poi per recuperare un campo faccio riga.Campo1

    O almeno così dice il manuale,

    solo che appena lancio il debug e mi posiziono su riga x vederne il valore mi da l'errore di cui sopra...
    Ho provato ad aggiungere una variabile di tipo type per l'estrazione del singolo campo ma non riconosce comunque riga, non riesce a prenderne il valore...

    Aiutoooooooooooooooo

  8. #8
    Utente di HTML.it L'avatar di Elena78
    Registrato dal
    Oct 2001
    Messaggi
    535
    Originariamente inviato da floyd
    se fai un for rec in cursname loop non serve dichiarare rec

    HO CAPITO.. se invece utilizzo la fetch, si, giusto??

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Elena78
    DARK:
    Nell'esempio che hai postato associ ad una variavile il tipo di dato del campo.
    Ma con ROWTYPE si definisce una variabile che contiene un intero recordo del corsure.

    Io ho bisogno di recuperare più di un campo.
    Quindi salvo il record nella variabile riga e poi per recuperare un campo faccio riga.Campo1

    O almeno così dice il manuale,

    solo che appena lancio il debug e mi posiziono su riga x vederne il valore mi da l'errore di cui sopra...
    Ho provato ad aggiungere una variabile di tipo type per l'estrazione del singolo campo ma non riconosce comunque riga, non riesce a prenderne il valore...

    Aiutoooooooooooooooo
    si, quello che dice il manuale è giusto, è giusta anche la dichiarazione (come del resto ha scritto floyd nel primo post).
    Il problema sta nel fatto che non sembra riconoscere l'identificatore della variebile, come se in vb non fai una NEW dopo il dimensionamento...

    l'errore te lo da DOPO che inserisci i valori nella variabile riga?

    potrebbe darsi che ti posizioni su riga PRIMA che lui la usi e quindi la instanzi....credo, non sono molto ferrato su pl/sql lo sai, però quell'errore sembra generico

  10. #10
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    per Elena: esatto, se fetchi devi dichiarare,
    se FORi (che verbo!) puoi omettere la dichiar.

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.