No Compilation Error List when Proxied

Kenneth

Member
Hello, I'm having trouble viewing package compilation errors when logging in via proxy, opening a saved package (.pck), and attempting to compile. I'm on PL/SQL Developer v10.0.5.1710 and we're using Oracle v11.2.0.2.0.

Traditionally, my team has logged directly into certain client schemas to do development. Recently, we switched to using proxy access only. For example, any work done for CLIENT is now done as DEVELOPER[CLIENT]. This is causing an issue when compiling packages that have compilation errors. I get the alert that there are errors, but no errors are shown. We work out of source control, meaning we modify local files and compile from those saved files, rather than directly editing an object in the database.

Take this package, for example:
CREATE OR REPLACE PACKAGE test_pck IS

END;
/
CREATE OR REPLACE PACKAGE BODY test_pck IS

PROCEDURE test_proc IS

BEGIN

123

END test_proc;

END;
/


If I put that code into a new Program window (file -> new -> program window), it'll compile and give me the error list. If I edit the object using the Object Browser of PL/SQL developer, I can compile and review the error list. However, if I save that out as a .pck file, then re-open the file and compile, I get the alert that there were errors, but no errors are shown. Similarly, I can run that CREATE PACKAGE command in a Command Window with the following output:

SQL>
Package created
Warning: Package body created with compilation errors


but I can't see the errors, and this suggests that the incorrect owner is being used to filter, perhaps?

SQL> show errors package body test_pck
No errors for PACKAGE BODY DEVELOPER[CLIENT].TEST_PCK


I've read other similar posts and I've confirmed that I do not have background compilation enabled and that I have no custom pl/sql warnings setup. I was unable to locate any other suggestions related to this issue.
 
Hi Kenneth,

it seems you're right. I never heard of this proxy-thing but did a simple test to re-produce. Same behaviour in plsqldev 11 with Oracle 11.2.0.4. With sqlplus it works fine.

I think plsqldev uses the expression DEVELOPER[CLIENT] whenever no user/schema is explicitly provided. This is a bug.

As a workaround, you can
- use the compile invalid objects tool
- use show errors package body client.test_pck
- don't use proxies on dev-dbs (btw: why do you it?)

Thomas.
 
Awesome, thanks for the quick confirmation. We develop for several clients, and for security compliance, we're restricting how our developers access those clients in our development environments. On our team, you'll only have proxy rights as the few clients you support. I can easily generate a report to determine which clients my team can access. If we share the password and login directly, I can no longer show that report. Auditors be auditing!
 
Found a workaround today. If you qualify the schema owner in the package name when compiling, it'll show errors. Meaning, this works:

CREATE OR REPLACE PACKAGE client.test_pck IS

END;
/
CREATE OR REPLACE PACKAGE BODY client.test_pck IS

PROCEDURE test_proc IS

BEGIN

123

END test_proc;

END;
/

But this doesn't:
CREATE OR REPLACE PACKAGE test_pck IS

END;
/
CREATE OR REPLACE PACKAGE BODY test_pck IS

PROCEDURE test_proc IS

BEGIN

123

END test_proc;

END;
/
 
Back
Top