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

Home -> Community -> Mailing Lists -> Oracle-L -> RE: Interesting!

RE: Interesting!

From: Pardee, Roy E <roy.e.pardee_at_lmco.com>
Date: Thu, 05 Jun 2003 03:22:11 -0700
Message-ID: <F001.005AA2F8.20030604094019@fatcity.com>


I believe PL/SQL packages let you do a fair bit of information hiding--any signature you leave out of the package spec is essentially private to the package. You can also decare package-wide variables in the package body to keep them private to the package. For instance:

create or replace package my_package is
  v_my_public_var VARCHAR2(30) ;

  procedure my_public_procedure ;
end my_package ;

create or replace package body my_package is   v_my_private_var VARCHAR2(30) ;
  procedure my_private_procedure is
  begin
    v_my_private_var := 'Hello!' ;
  end my_private_procedure ;
  procedure my_public_procedure is
  begin
    my_private_procedure ;
  end my_public_procedure ;
end my_package ;

Cheers,

-Roy

Roy Pardee
Programmer/Analyst/DBA
SWFPAC Lockheed Martin IT
Extension 8487

-----Original Message-----

Sent: Wednesday, June 04, 2003 9:10 AM
To: Multiple recipients of list ORACLE-L

Hi

Possible scenario where it might make sense:

You want to "hide" some implementation from people that use your package. Since, AFAIK PL/SQL doesn't have information hiding (private, protected, public etc.),
this might be a way of not showing your private helper method's signature in your package declaration.
And yes, I am aware of the fact that it only makes sense with procs, funcs that
you only want to use from within the scope of the proc/func you define them in.
Otherwise you would end up with duplicate code.

Did I miss anything ?
Stefan

-----Ursprüngliche Nachricht-----

Von: Khedr, Waleed [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 4. Juni 2003 16:20
An: Multiple recipients of list ORACLE-L Betreff: RE: Interesting!

I think it's good to have (forgive me Jared :)). It reminds me with Pascal language.

Waleed

-----Original Message-----

Sent: Tuesday, June 03, 2003 9:40 PM
To: Multiple recipients of list ORACLE-L

My first real PL/SQL program used this technique. Of course since it was my first program I ran into a very annoying variable scope issue. Of course after spending hours debugging the code, I realized I should have taken the advice of our DBA, the infamous Jared Still, and just used a package. I have since looked askew at the nesting of procedures. I can't remember the actual error I encountered. It probably had nothing or very little to do with my nested procedures, but in my mind I can't consider this to be a good practice. A package does the same job, and so much cleaner.

P.S. I think this was the first time I noted Jared's annoying habit of being right

Steve McClure

-----Original Message-----

Waleed
Sent: Tuesday, June 03, 2003 4:10 PM
To: Multiple recipients of list ORACLE-L

I've just discovered this, never thought if it was possible or not. Just wanted to share it with you, so forgive me if you know it already. Procedure can contain other procedures:

create or replace procedure test_test1 as procedure test_test2 as
begin
 dbms_output.put_line('hello2');
 end;
function c1 ( p1 in number) return number as begin
 return(p1 * 2);
end;
begin

  dbms_output.put_line('hello1');
  test_test2;
  dbms_output.put_line( c1(10));

end;

Regards,

Waleed

--

Please see the official ORACLE-L FAQ: http://www.orafaq.net
--

Author: Khedr, Waleed
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services

---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).

--

Please see the official ORACLE-L FAQ: http://www.orafaq.net
--

Author: Steve McClure
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services

---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).
--

Please see the official ORACLE-L FAQ: http://www.orafaq.net
--

Author: Khedr, Waleed
  INET: [EMAIL PROTECTED]
Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services

---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).  

--

Please see the official ORACLE-L FAQ: http://www.orafaq.net
--

Author: Stefan Jahnke
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services

---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).

--

Please see the official ORACLE-L FAQ: http://www.orafaq.net
--

Author: Pardee, Roy E
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services

---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). Received on Thu Jun 05 2003 - 05:22:11 CDT

Original text of this message

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