## Reducing SQL overheads via "inline" stored functions SELECT H.emp_no, E.emp_name, H.hist_type, T.type_desc, count(*) From history_type T, emp E, emp_history H Where H.emp_no = E.emp_no And H.hist_type = T.hist_type Group By H.emp_no, E.emp_name, H.hist_type, T.type_desc ; ## This statement's performance may be improved via an inline function call. FUNCTION Lookup_Hist_Type (typ IN number) return varchar2 AS tdesc varchar2(30); CURSOR C1 IS SELECT type_desc FROM history_type WHERE hist_type = typ; BEGIN Open C1; Fetch C1 into tdesc; Close C1; return (nvl(tdesc,’?’)); END; FUNCTION Lookup_Emp (emp IN number) return varchar2 AS ename varchar2(30); CURSOR C1 IS SELECT emp_name FROM emp WHERE emp_no = emp; BEGIN Open C1; Fetch C1 into ename; Close C1; return (nvl(ename,’?’)); END; SELECT H.emp_no, Lookup_Emp(H.emp_no), H.hist_type, Lookup_Hist_Type(H.hist_type), count(*) FROM emp_history H GROUP BY H.emp_no, H.hist_type;