Code Contents shows Empty when Conditional Compilation Directives are used

Russell

Member
I have a package which uses PLSQL CCFLAGs for conditional compilation. When this package is opened in the Program Editor the Code Contents panel remains blank (version 7.1.4). Removing the conditional compilation directives ($IF $THEN $ELSE $END) from the code allows the Code Contents panel to display the correct data.

Is there anyway to get the Code Contents panel to play properly when conditional compilation is being used?
 
Is this a definite 'will be fixed'? I remember the same being said about version 7 would be having the fix back in 2006...
 
I'd like to add my vote for this to be fixed. Also noticed that the $END conditional keyword is seen by PSD as a variable. In the compilation output, PSD says:

Error: Hint: Variable '$END' is declared but never used in 'logs'
Line: 492
Text: $END
 
I want to explain why this is a really often used feature:
If you have a lot of customers using the same product but not using the same features and with different budgets, you'll have to compile for each customer his own licensed variant. Overloading is very intensive used.

Today it's not very funny, while sql-developer is hiding procedures and sometimes only some overloads in the package trees.
Sometimes only fulltext search will help. We have indeed some packages without any package tree left for navigation, its completely empty and noone has an idea how this misfeature is misparsing the packages nor has a workaround.
 
I still have some issues with it.
For example:

Code:
create or replace package TEST_COLLECTION is

  cursor c_Test_Collection_Cursor is
    select t.*, Cast(Null as t_Array_varchar2) Type_Collection
    from dual t;

  type t_Test_Collection_Cursor is ref cursor return c_Test_Collection_Cursor%rowtype;

  procedure View_Collection (p_Cursor out t_Test_Collection_Cursor);

end TEST_COLLECTION;
/
create or replace package body TEST_COLLECTION is

  procedure View_Collection (p_Cursor out t_Test_Collection_Cursor) is
  $IF (DBMS_DB_VERSION.version < 11) $THEN
  begin
    open p_Cursor for
      select t.*,
        Cast(MULTISET(select *
                      from dual) as t_array_varchar2) Type_Collection
      from dual t;
  $ELSE
  begin
    open p_Cursor for
      select t.*,
        Cast(MULTISET(select *
                      from dual) as t_array_varchar2) Type_Collection
      from dual t;
  $END
  end View_Collection;

end TEST_COLLECTION;
/

PL/SQL Dev 10.0.5.1710
 
Back
Top