# PL/SQL Fehler "Kein Wert zurückgegeben"



## MA (11. Jan 2012)

Hallo,

für die Schule müssen wir was in PL/SQL machen. Jetzt suche ich seit 7,5 h den Fehler, aber ich bin nicht fähig ihn zu finden. 

Ich möchte die oberen beiden Funktionen in der untern aufrufen. Der SQL-Code ist ok, nur die Verbindungen scheinen in der Syntax nicht zu stimmen.

Mein Code:


```
create or replace
PACKAGE BODY AUSLEIHE_SERVICE AS

/* Existiert Nutzer ? */ 
  FUNCTION existiertNutzer (
    p_ausweis_nr Nutzer.AusweisNr%TYPE
  ) RETURN VARCHAR2 AS v_ausweis_nr VARCHAR2(255);
  BEGIN
    SELECT AusweisNr INTO v_ausweis_nr
    FROM Nutzer
    WHERE AusweisNr = p_ausweis_nr;
  EXCEPTION
    when no_data_found then v_ausweis_nr := '0';
    RETURN v_ausweis_nr;
  END existiertNutzer;

--
  /* Ist Exemplar das richtige Medium? */
  FUNCTION richtigesMedium (
    p_signatur Medium.Signatur%TYPE
  ) RETURN VARCHAR2 AS v_signatur VARCHAR2(255);
  BEGIN
    SELECT signatur INTO v_signatur
		FROM Medium m
		INNER JOIN medienart ma ON m.martid = ma.martid
		WHERE (ma.martid LIKE '1' 
      OR  ma.martid > 5)
      AND Signatur = p_signatur;
  EXCEPTION
    when no_data_found then v_signatur:= '0';
    RETURN v_signatur;
  END richtigesMedium;
--

FUNCTION erstelle_ausl_o_vorbest(
    p_ausweis_nr Nutzer.AusweisNr%TYPE,
    p_standort_nr Standort.SoNummer%TYPE,
    p_signatur Medium.Signatur%TYPE
  ) RETURN DATE IS datum DATE;
  
 BEGIN 
   datum := current_date + 28;

  
  if existiertNutzer(p_ausweis_nr) = '0' then raise data_access; end if;
  if richtigesMedium(p_signatur) = '0' then raise exemplar_unlendable; end if;
  
  RETURN datum;
  END erstelle_ausl_o_vorbest;
--
END AUSLEIHE_SERVICE;
```
Testen tun wir über JUnit per Eclipse. Sobald einmal eine Data-Access-Exception geworfen wird und im anderen Fall eine Exemplar-Unlendable-Exception, gilt die Aufgabe als gelöst. Es werden tatsächlich beide Exeptions ausgelöst, aber nur einzeln. 

Läuft das gesamte Script durch, erhalte ich diese Fehlermeldungen:
- erstelle_ausl_o_vorbest  => ORA-06503: PL/SQL: Funktion hat keinen Wert zurückgegeben
- richtigesMedium => ORA-06503: PL/SQL: Funktion hat keinen Wert zurückgegeben
Data-Access-Exception wird geworfen

Entferne ich "if existiertNutzer ... ", erhalte ich diese Fehlermeldungen:
- erstelle_ausl_o_vorbest  => ORA-06503: PL/SQL: Funktion hat keinen Wert zurückgegeben
- existiertNutzer => ORA-06503: PL/SQL: Funktion hat keinen Wert zurückgegeben
Exemplar-Unlendable-Exception wird geworfen

Entferne ich beide "if ... ", erhalte ich diese Fehlermeldungen:
- existiertNutzer => ORA-06503: PL/SQL: Funktion hat keinen Wert zurückgegeben
- richtigesMedium => ORA-06503: PL/SQL: Funktion hat keinen Wert zurückgegeben
Datum wird ausgegebn


Hat jemand einen Tipp für mich? Ich werde bald irre...

Gruß Matthias


----------



## HimBromBeere (11. Jan 2012)

Das sieht mir eher nach einem PlSQL-Thema aus... ob du damit in einem Java-Forum Antworten findest, ist fraglich..., v.a. wenn du nicht eine Zeile zu deinem (sofern überhaupt vorhandenen) Java-Code verlierst. Was da also falsch läuft... Keine Ahnung


----------



## MA (12. Jan 2012)

Ok schade,

na dann schau ich mich mal weiter um...

Für Hinweise bin ich dennoch empfänglich.

Danke.


----------



## maki (12. Jan 2012)

Hier ist ein Hinweis: 
Deine Frage hat nix mit "Java Basics - Anfänger-Themen" zu tun, sie hat nichtmal etwas mit Java zu tun..

*verschoben*


----------



## Sly (14. Jan 2012)

falls du hier nicht fündig wirst, findest du vielleicht hier eine antwort: https://forums.oracle.com/forums/forum.jspa?forumID=75


----------

