RE: Are PL/SQL variable values runtime only?
Date: Wed, 22 Jul 2009 14:10:20 -0500 (CDT)
Message-ID: <9f7b4bf0afd50fc7feb737a8b848cc83.squirrel_at_society.servebeer.com>
Hi Ric,
I'm not questioning the scope of the variable, but the timing of the evaluation of the "my_pkg.my_value" function.
Contrast this example with my original:
CREATE OR REPLACE PROCEDURE new_bleah AS
v_test VARCHAR2(50);
BEGIN
v_test := my_pkg.my_value('ABC');
DBMS_OUTPUT.PUT_LINE(v_test);
END new_bleah;
/
This function clearly sets the value of "v_test" at runtime.
However, the original "bleah" function also sets the value of "v_test" at runtime, even though the assignment is in the DECLARE (variable) section and not in the BEGIN (code) section. I would have expected it to happen at compile time.
Hopefully that's a little clearer explanation?
Thanks!
Rich
> Hi Rich,
>
> The short answer is yes. The life of a variable is only within the
> block that it's defined. You can create variables in a package header
> that have a more global like life span. Although I'm not sure I totally
> understand what you are asking so maybe I'm off the mark here.
>
> I think this is covered in the scoping rules of the PL/SQL guide.
>
> Ric Van Dyke
>
>
> -----Original Message-----
> From: oracle-l-bounce_at_freelists.org
> [mailto:oracle-l-bounce_at_freelists.org] On Behalf Of Rich Jesse
>
> CREATE OR REPLACE PROCEDURE bleah AS
> v_test VARCHAR2(50) := my_pkg.my_value('ABC');
> BEGIN
> DBMS_OUTPUT.PUT_LINE(v_test);
> END bleah;
> /
-- http://www.freelists.org/webpage/oracle-lReceived on Wed Jul 22 2009 - 14:10:20 CDT