Thanks for the question, pan.
Asked: July 12, 2017 - 6:46 am UTC
Last updated: July 14, 2017 - 9:16 am UTC
Version: 10.2.0.1.0
Viewed 1000+ times
You Asked
Hi Tom,
I create a table, like this
create table pan0.t (c1 int, c2 varchar2(4000), c3 varchar2(4000), c4 varchar2(4000));
and then, insert data to generate a chain row
insert into pan0.t values(7, rpad('`',4000,'`'), rpad('!',4000,'!'), rpad('@',4000,'@'));
commit;
select rowid from pan0.t where c1 = 7;
AALYZmAAaAAAAq4AAA
The link relationship for ROWID is
AALYZmAAaAAAAq4AAA ==> AALYZmAAaAAAAq0AAA
Is there a function or process in oracle that implements this function?
fun(AALYZmAAaAAAAq0AAA) return AALYZmAAaAAAAq4AAA !!
Regardless of the link relationship is a=>b=>c=>d or a=>b,
fun(c) return a
fun(b) return a
a is rowid.
and Chris said...
I'm not sure what you're asking here. The rowid of a chained row remains the same:
create table t (c1 int, c2 varchar2(4000), c3 varchar2(4000), c4 varchar2(4000));
insert into t values (1, null, null, null);
commit;
select c1, rowid from t;
C1 ROWID
---------- ------------------
1 AAAcd+AABAAAS3oAAA
update t
set c2 = rpad('`',4000,'`'), c3 = rpad('!',4000,'!'), c4 = rpad('@',4000,'@');
select c1, rowid from t;
C1 ROWID
---------- ------------------
1 AAAcd+AABAAAS3oAAA
If you're asking how you get the physical location ("rowid") of the chained sections of the row, I'm not aware of a SQL function that will do this for you.
Rating
(1 rating)
Is this answer out of date? If it is, please let us know via a Comment