Steve McClure wrote:
> 
> Allright I am making some changes to some pl/sql code that handles batch
> inserts into the database.  I am making changes to correct an error where
> our clients are sending us data with invalid state information in their
> address fields.  A constraint prohibits the insert with records with invalid
> states, nulls are however allowed.  The decision was made to insert the rest
> of the address information, leaving the state column null.  OK that is
> enough background.  Here is an example of how I am handling this.
> 
> for x_rec in driving_cur loop
>    if (x_rec.state IS INVALID)then --pseudo coded to hide embarrassing
> design implementation
>       x_rec.state:=NULL;
>    end if;
>    insert into address(other_columns,..state)
> values(x_rec.other_cols,...x_rec.state);
> end loop;
> 
> I know I am asking a best practices question, and blatantly using old
> fashioned insert in the middle of a loop style code.  This was originally
> developed in 7.3, and hasn't been recoded to take advantage of the bulk
> enhancements.
> 
> My question is regarding the practice of changing the value of a record's
> attribute(setting x_rec.state to null) after I have selected that record in
> a cursor.  I have been doing this for some time, and it just dawned on me
> that it might not be a good idea to do this.  My thinking is it might be
> confusing to a developer, or the fear that at some point Oracle might
> say.."that was obviously not an intended feature, that usage no longer
> allowed".  I am wondering if instead I should test the state column of the
> record and then assign that value or NULL to a local variable.  I would then
> insert the local variable instead of the attribute from the record.
> 
> Just sort of a bouncing the ball off the wall here, in fact I think I may
> have resolved the question internally while asking it.  In any case I am
> wondering what others think.
> 
> Steve McClure
> 


Steve,

   Keeping aside all considerations about the loop, I see no problem
here. The cursor variable is just short-hand notation for defining a
table%ROWTYPE - you are not modifying some hidden Oracle internal state
if this is what you are fearing. No 'mutating cursor', if I guess you
correctly.

-- 
Regards,

Stephane Faroult
Oriole Software
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Stephane Faroult
  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).

Reply via email to