Kay
Kay

Reputation: 59

PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: begin end function pragma procedure

create or replace PACKAGE BODY ECOM_LOGIN
AS 
    FUNCTION AUTHENTICATE(
          P_USERNAME IN VARCHAR2 ,
          P_PASSWORD IN VARCHAR2)
    RETURN BOOLEAN
    IS
    V_RESULT INTEGER := 0;
    L_PASSWORD VARCHAR2(100);
    BEGIN
    SELECT PASSWORD
    INTO L_PASSWORD
    FROM MY_USERS
    WHERE (UPPER (USERNAME) = UPPER(P_USERNAME)
    OR PHONE_NUMBER = P_USERNAME)
    AND PIN = 'Y';

    IF L_PASSWORD = P_PASSWORD THEN
        RETURN TRUE;
    ELSE 
        RETURN FALSE;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
        RETURN FALSE;
    END AUTHENTICATE;

Upvotes: 1

Views: 75

Answers (1)

Koen Lostrie
Koen Lostrie

Reputation: 18650

A closing "END" keyword is missing from the package body:

create or replace PACKAGE BODY ECOM_LOGIN
AS 
    FUNCTION AUTHENTICATE(
          P_USERNAME IN VARCHAR2 ,
          P_PASSWORD IN VARCHAR2)
    RETURN BOOLEAN
    IS
    V_RESULT INTEGER := 0;
    L_PASSWORD VARCHAR2(100);
    BEGIN
    SELECT PASSWORD
    INTO L_PASSWORD
    FROM MY_USERS
    WHERE (UPPER (USERNAME) = UPPER(P_USERNAME)
    OR PHONE_NUMBER = P_USERNAME)
    AND PIN = 'Y';

    IF L_PASSWORD = P_PASSWORD THEN
        RETURN TRUE;
    ELSE 
        RETURN FALSE;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
        RETURN FALSE;
    END AUTHENTICATE;
-- line below is needed
END ECOM_LOGIN;

As a side note, a password should never be stored in clear text. Plenty of examples on how to store password on the internet, here is one (old it shows exactly what the point is.

Upvotes: 1

Related Questions