[Oracle] select into werkt niet

Pagina: 1
Acties:

  • BartBlackMagic
  • Registratie: December 2003
  • Laatst online: 08-04 09:31
Het probleem is heel eenvoudig, ik roep deze procedure op in java, hij geeft geen foutmeldingen,
maar in "v_id" wordt geen waarde geplaatst, met als gevolg dat er niks wordt geupdated. Als 'k gewoon in de declaratie v_id:=5 invul, doet hij het wel.
Hiervoor heb 'k een oplossing gevonden, namelijk FETCH ref_cursor INTO v_id; maar dan krijg 'k
geen cursor terug in java en kan 'k bijvoorbeeld men id niet meer ophalen. Iemand een id?

Dank
Bartje

mijn procedure:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
CREATE OR REPLACE PACKAGE pack_logincontr_verifylogin
AS
    TYPE cursor_type IS REF CURSOR;
    PROCEDURE usp_logincontr_verifylogin(p_username IN VARCHAR2, p_password IN VARCHAR2, ref_cursor OUT cursor_type);
END;
/

CREATE OR REPLACE PACKAGE BODY pack_logincontr_verifylogin
AS
    PROCEDURE usp_logincontr_verifylogin(
        p_username IN VARCHAR2,
        p_password IN VARCHAR2,
        ref_cursor OUT cursor_type
        )
    AS
        v_id dusers.id%TYPE;
    BEGIN
    
    OPEN ref_cursor FOR
        SELECT a.id
        INTO v_id
        FROM dusers a, usergroups b
        WHERE a.usergroups_id = b.id
        AND a.username =  p_username 
        AND a.password = p_password;
                
        UPDATE dusers
        SET accessed = SYSDATE
        WHERE id = v_id;
        
    END;
    
END;
/


java code voor het ophalen van bv. de id:
Java:
1
2
3
4
5
6
7
8
9
10
11
proc = connection.prepareCall("{ call pack_logincontr_verifylogin.usp_logincontr_verifylogin(?,?,?) } ");
            
proc.setString(1, "dimi987");
proc.setString(2, "password");
proc.registerOutParameter(3, OracleTypes.CURSOR);
proc.execute();
ResultSet rs = (ResultSet) proc.getObject(3);
            
while (rs.next()){
         System.out.println(rs.getInt(1));
}

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 18:52
hier stond onzin

[ Voor 87% gewijzigd door JeroenTheStig op 27-02-2006 14:39 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Eeen select into kun je niet als een ref cursor terug geven, hij fetched namelijk gelijk.
In dit geval wil je ook gelijk fetchen omdat je het id al nodig hebt.
Dus moet je je return type veranderen in het datatype van het id en dan de waarde terug geven.

Who is John Galt?