It would be great if the “Go to Declaration” feature could work from function specifications. Additionally, it would be very helpful to be able to navigate to the declaration (or body) of another package directly from the code.
Here is a sample code snippet that demonstrates the issue:
drop table TMP_USEROBJECTS
/
drop package pkc_object
/
drop package pki_object
/
CREATE TABLE TMP_USEROBJECTS
(OBJECT_NAME VARCHAR2(128 BYTE),
OBJECT_TYPE VARCHAR2(19 BYTE),
CREATED DATE
)
/
create or replace PACKAGE pkc_object IS
SOME_OBJECT_TYPE CONSTANT VARCHAR2(100) := 'SOME_OBJECT_TYPE';
END pkc_object;
/
create or replace PACKAGE pki_object IS
PROCEDURE Insert_Object(
p_object_name IN TMP_UserObjects.object_name%TYPE,
p_object_type IN TMP_UserObjects.object_type%TYPE,
p_created IN TMP_UserObjects.created%TYPE
);
END pki_object;
/
create or replace PACKAGE BODY pki_object IS
PROCEDURE Insert_Object(
p_object_name IN TMP_UserObjects.object_name%TYPE,
p_object_type IN TMP_UserObjects.object_type%TYPE,
p_created IN TMP_UserObjects.created%TYPE
) IS
BEGIN
INSERT INTO TMP_UserObjects (object_name, object_type, created)
VALUES (p_object_name, p_object_type, p_created);
DBMS_OUTPUT.PUT_LINE(pkc_object.SOME_OBJECT_TYPE);
END Insert_Object;
END pki_object;
/
In my case:
- “Go to Declaration” works fine when called from the INSERT statement.
- However, it does not work when I try to navigate from the %TYPE references in the parameter declarations such as TMP_UserObjects.object_name%TYPE.
- It also does not work for references like pkc_object.SOME_OBJECT_TYPE inside the procedure body.