oldyyy
asked on
what're Oracle equivalent of DB2 sysibm.sysindexes,sysibm.sysrels
Hi,
I have the following two queries from db2 system tables to return primary key and a list of children tables of a given table
Could anybody help to convert them to Oracle equivalent
1. SELECT colnames
FROM sysibm.sysindexes
WHERE tbName = 'mytableName' AND
uniquerule = 'P' AND colcount = 1
2.
SELECT tbname, fkcolnames
FROM sysibm.sysrels
WHERE reftbname = 'myTableName'
ORDER BY timestamp
Thanks.
I have the following two queries from db2 system tables to return primary key and a list of children tables of a given table
Could anybody help to convert them to Oracle equivalent
1. SELECT colnames
FROM sysibm.sysindexes
WHERE tbName = 'mytableName' AND
uniquerule = 'P' AND colcount = 1
2.
SELECT tbname, fkcolnames
FROM sysibm.sysrels
WHERE reftbname = 'myTableName'
ORDER BY timestamp
Thanks.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks seazodiac and dharramore.
seazodiac's1 give me a list of 6 rows on oracle, where the db2 one only returned one row--> the first row.
Seazodiac's 1 is equivalent to the following db2
SELECT colnames
FROM sysibm.sysindexes
WHERE tbName = 'mytableName'
( without uniquerule = 'P' AND colcount = 1)
seazodiac's 2 give me 0 rows, where the db2 one returned 4 rows on db2 database.
dnarramore's 1 gives me 0 rows
Could anyone help again?
Thanks
seazodiac's1 give me a list of 6 rows on oracle, where the db2 one only returned one row--> the first row.
Seazodiac's 1 is equivalent to the following db2
SELECT colnames
FROM sysibm.sysindexes
WHERE tbName = 'mytableName'
( without uniquerule = 'P' AND colcount = 1)
seazodiac's 2 give me 0 rows, where the db2 one returned 4 rows on db2 database.
dnarramore's 1 gives me 0 rows
Could anyone help again?
Thanks
oldyyy:
Here is the explanation for my first query to return 6 rows in oracle but the similar query return only 1 rows.
that's because when you have "colcount=1" and "uniquerule='P'" in the where clause, you are limited the ONLY PRIMARY KEY column in the MytableName , and conceivably, you have only one PRimary key in one table.
the similar query in Oracle will return all the Indexed columns including PRIMARY key (because Oracle db will create a unique index on PK by default).
Here is the explanation for my first query to return 6 rows in oracle but the similar query return only 1 rows.
that's because when you have "colcount=1" and "uniquerule='P'" in the where clause, you are limited the ONLY PRIMARY KEY column in the MytableName , and conceivably, you have only one PRimary key in one table.
the similar query in Oracle will return all the Indexed columns including PRIMARY key (because Oracle db will create a unique index on PK by default).
just to add, still on the first question, colcount in IBM sysindexes table means the number of columns in the index.
so your original query is trying to get the single-column Primary key from sysindexes table.
there is really no need to try to find the matching query, as long as you are getting comfortable with Metadata in each database, you will get what you want.
so your original query is trying to get the single-column Primary key from sysindexes table.
there is really no need to try to find the matching query, as long as you are getting comfortable with Metadata in each database, you will get what you want.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
(2)
select column_name,position
from all_cons_columns a, all_constraints b
where b.table_name='TABLEName'
and a.constraint_name=b.constr aint_name
and constraint_type='R'
select column_name,position
from all_cons_columns a, all_constraints b
where b.table_name='TABLEName'
and a.constraint_name=b.constr
and constraint_type='R'
select table_name, column_name
from all_cons_columns A, all_constraints B
where A.constraint_name=B.constr
and B.constraint_type='R'
and table_name='<table_name in CAPS>'