Ich versuche, eine gespeicherte Prozedur in Oracle zu schreiben (die ich inzwischen hasse, aber das nur nebenbei). Wenn ich die gespeicherte Prozedur ausführe, wird mir gesagt, dass ich zu viele Zeilen abgerufen habe (z. B. mehr als 1), aber wenn ich die Daten über Text abfrage, wird mir klar gesagt, dass nur eine Zeile dieses Kriterium erfüllt.
create or replace
PROCEDURE GETADDRESSCOORDS
(
HOUSE IN VARCHAR2
, STREET IN VARCHAR2
, X OUT NUMBER
, Y OUT NUMBER
) AS
BEGIN
SELECT X\_COORD, Y\_COORD INTO X,Y FROM MASTER\_ADDRESS
WHERE HOUSE=HOUSE AND STR\_NAME=STREET AND PRE\_DIR IS NULL;
END GETADDRESSCOORDS;
Bei der Ausführung erhalte ich diese Fehlermeldung:
SQL> execute getaddresscoords('1550', 'BEDFORD', :X, :Y)
BEGIN getaddresscoords('1550', 'BEDFORD', :X, :Y); END;
\*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "TAXLOTS.GETADDRESSCOORDS", line 9
ORA-06512: at line 1
Ich habe also zu viele Zeilen...aber wenn ich das ausführe:
SQL> SELECT MAX(rownum) from MASTER\_ADDRESS where HOUSE='1550'
AND STR\_NAME='BEDFORD' AND PRE\_DIR IS NULL;
MAX(ROWNUM)
-----------
1
Was übersehe ich hier?