Я пытаюсь вызвать функцию IS_NUMBER для имени пользователя DSCRPT, но мне пришлось создать функцию при входе в систему DSCDBA. Я предоставил разрешения EXECUTE, как и для многих других функций, но эта функция повышает НЕВЕРНЫЙ ИДЕНТИФИКАТОР ошибка
Функция:
create or replace
FUNCTION is_number (p_string IN VARCHAR2)
RETURN INT
IS
v_new_num NUMBER;
BEGIN
v_new_num := TO_NUMBER(p_string);
RETURN 1;
EXCEPTION
WHEN VALUE_ERROR THEN
RETURN 0;
END;
GRANT:
GRANT EXECUTE ON "DCSDBA"."IS_NUMBER" TO "DCSRPT";
Выполнение SQL при входе в систему как DSCRPT
SELECT IS_NUMBER('123') FROM DUAL;
Ошибка:
ORA-00904: «IS_NUMBER»: неверный идентификатор 00904. 00000 - «% s: неверный идентификатор» * Причина:
* Действие: Ошибка в строке: 1Столбец: 8
Подтверждено. Я вижу функцию при входе в DSCRPT
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION') and owner = 'DCSDBA' order by owner, object_name;
Возврат поиска ALL_OBJECTS