2017-11-24 4 views
0

Wie kann ich diese Funktion in SQL Plus testen?Wie Testfunktion in SQL Plus

CREATE OR REPLACE FUNCTION validid(
    p_deptid IN dept.deptno%TYPE 
) 
RETURN BOOLEAN IS 
    v_dummy PLS_INTEGER; 
BEGIN 
    SELECT 1 
    INTO v_dummy 
    FROM dept 
    WHERE deptno = p_deptid; 

    RETURN TRUE; 

    EXCEPTION 
     WHEN NO_DATA_FOUND THEN 
      RETURN FALSE; 
END validid; 
/

Antwort

0

Da die Funktion Boolean zurückgibt, können Sie sie nicht testen, indem Sie sie aus SQL aufrufen. Sie müssen es von PL/SQL aufrufen. Unten zeige ich einen kleinen anonymen Block, der die Funktion aufruft und etwas auf den Bildschirm ausgibt. Um die Ergebnisse anzuzeigen, müssen Sie möglicherweise zuerst den Befehl set serveroutput on ausführen. (Es ist ein SQL * Plus-Befehl, nicht SQL oder PL/SQL, also müssen Sie es nicht mit Semikolon oder Schrägstrich beenden.)

Natürlich nehme ich an, die Funktion kompiliert korrekt - was bedeutet, dass Sie eine haben Tabelle DEPT in Ihrem Schema, und dass es eine Spalte DEPTNO hat. Andernfalls würden Sie einen Kompilierungsfehler erhalten.

set serveroutput on 

begin 
    if validid(20) 
    then dbms_output.put_line('20 is valid'); 
    else dbms_output.put_line('20 is invalid'); 
    end if; 
end; 
/

PL/SQL procedure successfully completed. 

20 is valid