Я получаю "ORA-00904: неверный идентификатор" при вызове функции, несмотря на то, что мне дано GRANT EXECUTE - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь вызвать функцию 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

1 Ответ

1 голос
/ 06 марта 2019

Попробуйте позвонить

SELECT DCSDBA.IS_NUMBER('123') FROM DUAL;
...