Rich,I get the feeling that you want to create the package with a constant assignment, but have your create script retrieve the constant at create time, is that right?
In that case you could use SQL*Plus like this: rem begin script col a new_value b noprint select my_pkg.my_value('ABC') as a from dual / create or replace procedure bleah as v_test VARCHAR2(50) := &b; BEGIN DBMS_OUTPUT.PUT_LINE(v_test); END bleah; / rem end script hth, Tony Rich Jesse wrote:
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! RichHi 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@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] 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; /-- //www.freelists.org/webpage/oracle-l
-- //www.freelists.org/webpage/oracle-l