Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: HELP--wrapped packages

Re: HELP--wrapped packages

From: Thomas Kyte <tkyte_at_us.oracle.com>
Date: 1997/07/24
Message-ID: <33d78a11.11364821@newshost>#1/1

On Wed, 23 Jul 1997 22:56:04 GMT, benh_at_dascom.com (Ben Harmon) wrote:

>I need to get the names of all the procedures, just the procedures, from
>any given wrapped package specification.
>
>I know that the whole purpose of wrapping a package is to make this as
>difficult as possible, but I have to do it anyway. : -(
>

Actually, not. Wrapped packages were designed to allow you to write an application and deliver it in a format that does not let others read your code. Typically, people wrap the bodies, not the spec (thats what the Oracle packages do anyway). the spec is in clear text in the database for the comments and externalized procedures to be visible.

>So, given that, I have already determined that I cannot get the information
>from the sys.source$ table. Even if it were possible to parse the 'header'
>section of the encrypted source, the encryption mechanism could change at any
>time (according to Oracle) and then my parser will be useless.
>
>I have also determined that, while I can get the names of procedures that take
>one or more argument from the sys.argument$ table, I cannot get the names of
>procedures that take no arguments.
>

Thats not true. From 7.2 on up, this information is available in sys.argument$

for example:

SQLDBA> create package foopkg
     2> as
     3> procedure bar;
     4> end;
     5> /

Statement processed.

SQLDBA> select obj#, procedure$ from sys.argument$ where procedure$ = 'BAR'; OBJ# PROCEDURE$

---------- ------------------------------
      1340 BAR                           
1 row selected.

SQLDBA> select object_name, object_type from user_objects where object_id=1340; OBJECT_NAME OBJECT_TYPE
------------ ------------
FOOPKG PACKAGE
1 row selected.

SQLDBA> select * from v$version;
BANNER


Oracle7 Server Release 7.2.3.0.0 - Production Release           
PL/SQL Release 2.2.3.0.0 - Production                           
CORE Version 3.4.3.0.0 - Production                             
TNS for SVR4: Version 2.2.3.0.0 - Production                    
NLSRTL Version 3.1.4.6.0 - Production                           
5 rows selected.
SQLDBA> In 7.3 it even easier as the view user_arguments and all_arguments has this information as well (pre-joined).

>So, what other options are available?
>Has anyone ever gotten data directly from the Oracle binaries? If so, how
>would I go about doing this?
>
>help?
>
>Thanks,
>
>________________________________________________
>Ben Harmon
>ben_at_dascom.com.nospam
>**Please remove .nospam suffix if you want to mail me**
>________________________________________________

Thomas Kyte
tkyte_at_us.oracle.com
Oracle Government
Bethesda MD

http://govt.us.oracle.com/ -- downloadable utilities



Opinions are mine and do not necessarily reflect those of Oracle Corporation Received on Thu Jul 24 1997 - 00:00:00 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US