函数没有得到值问题 postgresql 9.4

function doesnt get the value issue postgresql 9.4

我有用户table,想根据邮件查询用户是否存在。但是当我根据电子邮件调用 return 用户名的函数时,函数引发异常说找不到用户名,而引发通知和异常都能够显示用户名。然后当我不放这部分时;

IF NOT FOUND THEN
    RAISE NOTICE '%', v_username;
    RAISE EXCEPTION '% not found', v_username; 
END IF;

然后它说;

control reached end of function without RETURN

然后当我从 visual studio 调用这个函数时它给出了一个异常;

ERROR [42601] ERROR: syntax error at or near \"get_username\";\nError while executing the query

有什么问题?

CREATE OR REPLACE FUNCTION webuser.get_username(email varchar(30)) RETURNS varchar as $$
DECLARE
    v_username varchar(30); 
    v_state   varchar(1000);
    v_msg     varchar(1000);
    v_detail  varchar(1000);
    v_hint    varchar(1000);
    v_context varchar(1000);
BEGIN
        v_username := (SELECT username FROM webuser.users u WHERE  u.email = quote_ident());
    IF NOT FOUND THEN
        RAISE NOTICE '%', quote_ident();
        RAISE EXCEPTION '% not found', v_username;
    END IF;
    EXCEPTION WHEN others THEN
        GET STACKED DIAGNOSTICS
            v_state   = RETURNED_SQLSTATE,
            v_msg     = MESSAGE_TEXT,
            v_detail  = PG_EXCEPTION_DETAIL,
            v_hint    = PG_EXCEPTION_HINT,
            v_context = PG_EXCEPTION_CONTEXT;
    INSERT INTO webuser.error_table (v_state, v_msg, v_detail, v_hint, v_context) VALUES ( v_state, v_msg, v_detail, v_hint, v_context); 

RETURN v_username;
END;
$$ language PLPGSQL volatile--stable is not accepted because of error logging to error table?!
    SECURITY DEFINER
    SET search_path = webuser, pg_temp;

正确的语法应该是

<BODY>
RETURN v_username; -- no error return

EXCEPTION WHEN others THEN
     <BODY>
  RETURN <something>;  -- error return