Re: pl/sql: test if record is empty

From: steph <stephan0h_at_yahoo.de>
Date: Tue, 27 May 2008 08:06:21 -0700 (PDT)
Message-ID: <243ebdba-2e0b-4d77-966b-f30e60e5db06@m73g2000hsh.googlegroups.com>


On 27 Mai, 16:03, "fitzjarr..._at_cox.net" <orat..._at_msn.com> wrote:
> On May 27, 5:45 am, steph <stepha..._at_yahoo.de> wrote:
>
>
>
> > oracle 10G
>
> > I apparently overlooked it in the manuals - so please be patient ...
>
> > How can I test if a record is empty?
>
> > I expected it to work like this:
>
> > declare
> > o_rec mytab%ROWTYPE;
> > begin
> > if o_rec.empty then
> > dbms_output.put_line('empty');
> > end if;
> > end;
>
> > ... but it does not.
>
> > Thanks,
> > stephan
>
> No, it does not:
>
> ERROR at line 4:
> ORA-06550: line 4, column 12:
> PLS-00302: component 'EMPTY' must be declared
> ORA-06550: line 4, column 3:
> PL/SQL: Statement ignored
>
> You should be checking a known NOT NULL value for NULL instead:
>
> SQL> declare
> 2 o_rec emp%ROWTYPE;
> 3 begin
> 4 if o_rec.empno is null then
> 5 dbms_output.put_line('empty');
> 6 end if;
> 7 end;
> 8 /
> empty
>
> PL/SQL procedure successfully completed.
>
> SQL>
>
> David Fitzjarrell

Thanks, but this is my workaround already - thought there must be something more elegant out there.

Similarily, how can I empty a record? Do I need to empy all of it's components like:

declare
  o_rec mytab%ROWTYPE;
begin
  o_rec.empno:=null;
  o_rec.empname:=null;
  ...
end;

cheers, Received on Tue May 27 2008 - 10:06:21 CDT

Original text of this message