刚写了一个,是个好例子,贴出来,以免日后忘了。
CREATE OR REPLACE PACKAGE BODY jd_pkg_user AS FUNCTION f_get_right ( i_user_id IN VARCHAR2, i_comp_no IN VARCHAR2, i_fun_id IN VARCHAR2, i_right_item IN VARCHAR2 ) RETURN VARCHAR2 AS v_count NUMBER := 0; invalid_column_name EXCEPTION; PRAGMA EXCEPTION_INIT (invalid_column_name, -904); BEGIN SELECT COUNT (1) INTO v_count FROM asp_user_function_detail WHERE comp_no = i_comp_no AND user_name = i_user_id AND fun_id = i_fun_id AND price_flag = 'Y';
EXECUTE IMMEDIATE 'SELECT COUNT(1) FROM ASP_USER_FUNCTION_DETAIL WHERE COMP_NO = :COMP_NO AND USER_NAME = :USER_NAME AND FUN_ID = :FUN_ID AND ' || i_right_item || '= :RIGHT_VALUE' INTO v_count USING IN i_comp_no, i_user_id, i_fun_id, 'Y';
IF v_count > 0 THEN RETURN 'Y'; ELSE RETURN 'N'; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 'N'; WHEN invalid_column_name THEN raise_application_error (-20001, 'Field :' || i_right_item || ' not exists' ); END; END;
|