From: "Sybrand Bakker" <postbus@sybrandb.demon.nl>
Newsgroups: comp.databases.oracle.server
Subject: Re: A RowId in Oracle 8i
Date: Fri, 2 Feb 2001 18:52:25 +0100
Message-ID: <t7ltcfdn2h1i03@beta-news.demon.nl>
References: <95eilr$j87$1@pheidippides.axion.bt.co.uk>
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.3018.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.3018.1300
X-Complaints-To: abuse@nl.demon.net
NNTP-Posting-Host: sybrandb.demon.nl
X-NNTP-Posting-Host: sybrandb.demon.nl:212.238.21.78
X-Trace: beta-news.demon.nl 981136783 beta-news:59586 NO-IDENT sybrandb.demon.nl:212.238.21.78
Lines: 43



"Bynia Doyle" <bynia.doyle@bt.com> wrote in message
news:95eilr$j87$1@pheidippides.axion.bt.co.uk...
> Hi,
> In 7.3.4 I I used Rowids in a statement that was passed to dbms_sql as as
>  follows:
> Delete from Table where Rowid in (Rowid1, Rowid2,..., Rowidn).
>
> The (Rowid1, Rowid2,..., Rowidn) was stored in a variable of type VARCHAR2
> and was construted in a loop.
>
> When I'm attempting to do use the same approach in Oracle 8.1.6 I get
> ORA-01410: invalid ROWID
>
> I gather that the data type of RowId is not the same as it was in 7.3.4 -
 any
> ideas on the changes to the statement to get it to work?
>
> Thanks,
> Bynia.
>
> Bynia.
>
> bynia.doyle@bt.com
>
> ** All possible disclaimers apply **

You have two choices:
1 (preferred) wherever you can use a select for update in an explicit
cursor. You process the records by
for Currec in Cursr loop
...
delete from foo where current of Cursr

No rowids necessary, and compatible in all versions
2 use the dbms_rowid package in Oracle 8 to translate the Oracle 7 rowid to
an Oracle 8 rowid. It's use is documented in the migration documentation.

Hth,
Sybrand Bakker, Oracle DBA




