title: I get "ORA-00904: invalid identifier" on function call despite being given GRANT EXECUTE
body: <p>I am trying to make a call to a IS_NUMBER function for the DSCRPT user name, but I've had to create the function in the DSCDBA login
  I GRANTed EXECUTE permissions as I have on multiple other functions, but this one is raising an <em>INVALID IDENTIFIER</em> error</p>
  
  <p>Function:</p>
  
  <pre><code>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;
  </code></pre>
  
  <p>GRANT:</p>
  
  <pre><code>GRANT EXECUTE ON "DCSDBA"."IS_NUMBER" TO "DCSRPT";
  </code></pre>
  
  <p>Executing SQL while logged in as DSCRPT</p>
  
  <pre><code>SELECT IS_NUMBER('123') FROM DUAL;
  </code></pre>
  
  <p>Error:</p>
  
  <blockquote>
    <p>ORA-00904: "IS_NUMBER": invalid identifier
    00904. 00000 -  "%s: invalid identifier"
    *Cause:<br>
    *Action: Error at Line: 1 Column: 8</p>
  </blockquote>
  
  <p>Confirmed I can see the function while logged into DSCRPT</p>
  
  <pre><code>SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION') and owner = 'DCSDBA' order by owner, object_name;
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/VZZdg.png" rel="nofollow noreferrer">Return of ALL_OBJECTS search</a></p>