2017-03-28 2 views
0

Ich arbeite an Oracle Apex 5, und wenn ich versuche, die Anwendung mit dem folgenden Code für eine Spalte auszuführen, erhalte ich die Fehlermeldung "exact fetch returns mehr als angefordert Anzahl der Zeilen ""exact fetch gibt mehr als angeforderte Anzahl der Zeilen zurück"

DECLARE 
    TERRANUMBER VARCHAR2(40); 
BEGIN 
    SELECT CONCAT(YEAR, '-') 
INTO TERRANUMBER FROM MP_APPLICATIONS; 
END; 
+0

Versuchen Sie einfach, SELECT CONCAT (Jahr, '-') von MP_APPLICATIONS '. Sie werden sehen, dass es mehr als eine Zeile zurückgibt, die offensichtlich nicht in eine einzelne Variable eingefügt werden kann. Möchten Sie einen der Werte erhalten? max/min vielleicht? – GurV

Antwort

1

Die Variable terranumum kann nur einen Wert enthalten. Wenn Sie also die Abfrage auswählen, werden mehrere Zeilen zurückgegeben, sodass dieser Fehler ausgegeben wird.

Wenn Sie eine der Werte:

declare 
    terranumber varchar2(40); 
begin 
    select concat(year, '-') into terranumber 
    from mp_applications 
    where rownum = 1; 
end; 
/

Vielleicht möchten Sie max (oder min) von Jahr erhalten:

declare 
    terranumber varchar2(40); 
begin 
    select concat(max(year), '-') into terranumber 
    from mp_applications; 
end; 
/

Oder kann man alle Werte zugreifen möchten eins nach dem anderen:

begin 
    for rec in (select concat(year, '-') as year from mp_applications) 
    loop 
     -- use rec.year as required 
    end loop; 
end; 
/
+0

Vielen Dank. Die Anwendung gerendert. – ruchithelamp

+0

Wenn ich das rownum verwende, erhält es nur die erste Zeile von den Spalten, die (in concat) genannt werden. Wie kann ich die neuesten Zeilen für die Spalten abrufen? (TOP und LIMIT funktionieren nicht auf Oracle Apex 5) – ruchithelamp

0

Bei Verwendung einer INTO-Klausel darf nur eine Zeile ausgewählt werden. Im Allgemeinen fügen Sie WHERE-Klausel-Kriterien hinzu, um die zurückgegebenen Daten auf nur eine Zeile zu beschränken. Oder natürlich, das hängt davon ab, was Sie versuchen zu tun.

Verwandte Themen