2017-08-23 1 views
-1

Ich habe eine Zeile in meiner Company_Person_all-Ansicht mit dem Namen "YENER UZUN" in der Spalte EMPLOYEE_NAME (ich möchte nur ein Ergebnis). Wenn ich Parameter zu dieser Funktion senden (fname, statt ‚YENER UZUN‘ verwenden) begegne ichora-01422 Fehler in SELECT İNTO-Anweisungen

ORA-01422:exact fetch returns more than requested number of rows ... 

Was kann ich tun, um diesen Fehler zu verhindern? Auch wenn ich den folgenden Code schreibe ('YENER UZUN' anstelle von fname), ist es in Ordnung, es gibt mir keinen Fehler.

FUNCTION Get_Calistigi_Santiye_By_Fname(fname IN varchar2) 
    RETURN varchar2 
IS 
    temp_ varchar2(100); 
BEGIN 
    select free_field6 
    into temp_ 
    from company_person_all 
    where employee_name = 'YENER UZUN'; 

    DBMS_OUTPUT.put_line(temp_); 
    RETURN temp_; 
END; 
+0

Das sollte nicht passieren. Wie rufst du die Funktion auf und gibst den 'fname' Wert ein? –

+0

BEGIN dbms_output.put_line ('irgendwas': '|| company_person_api.Get_Calistigi_Santiye_By_Fname (' YENER UZUN ')); ENDE;/* wie folgt */ –

+0

UND dieser Code gibt nur eine Zeile an mich zurück ... wähle * von Company_Person wo employee_name = 'YENER UZUN'; –

Antwort

0

Ich löste es, indem ich den Parameternamen 'fname' in 'xyz' änderte. 'fname' wurde von anderen Prozeduren und Funktionen im Paket mit einem RECORD-Instanznamen verwendet. Also, wenn ich den Parameternamen änderte, wurde der Fehler sofort behoben.

+0

Ich kenne keinen globalen Parameter in Oracle namens 'fname'. – XING

+0

Dies ist ein auf Oracle basierendes ERP-System namens IFS. Ich habe nicht verstanden, warum es mein Problem genau gelöst hat. Aber das Ändern des Parameternamens ist kein Witz, es hat diesen Fehler gelöst. –

+0

Folgen Sie nicht, dass Sie nicht sicher sind. Es könnte dir jetzt helfen, aber woanders würde es wehtun. versuche meine Lösung und überprüfe, ob das funktioniert. – XING