Avatar billede mmbn Nybegynder
24. maj 2005 - 10:13 Der er 4 kommentarer og
1 løsning

sql forespørgsel hjælp

er der nogen måde hvor jeg kan få fat i alle oplysninger om en database, ment på den måde at jek kan få fat i tabelnavne,definitioner, primærnøgler, fremmednøgler osv?

jeg har to udtryk jeg har leget lidt med men ingen af dem får alle oplysninger ud på en gang. Kan man eventuelt kombinere dem og i dette tilfælde hvordan?

udtryk 1:
SELECT dcc.table_name TabelTitel,
      dcc.column_name FeltDefTitel,
      dtc.column_id Ordinal_Position,
      dtc.data_type DataType,
      dtc.Data_Length Length,
      dtc.Data_Precision Precision,
      dtc.Data_Scale Scale,
      dcc.comments FeltInfo
FROM user_col_comments dcc, user_tab_columns dtc, user_tab_comments utc
WHERE dcc.table_name = dtc.table_name
AND dcc.column_name = dtc.column_name
AND dcc.table_name = utc.table_name
AND utc.table_type = 'TABLE'
ORDER BY dtc.table_name, dtc.column_id

udtryk 2:
SELECT uc.r_constraint_name AS pk_constraint,
uccp.table_name AS parent_table,
uccp.column_name AS parent_column,
uc.constraint_name AS fk_constraint,
uccf.table_name AS child_table,
uccf.column_name AS child_column
FROM user_constraints uc,
user_cons_columns uccp,
user_cons_columns uccf
WHERE uc.table_name = UPPER ('&tablename')
AND uc.constraint_type    = 'R'
AND uc.r_constraint_name = uccp.constraint_name
AND uc.constraint_name    = uccf.constraint_name

hvor &tablename i udtryk 2 gerne skulle være alle tabellerne
Avatar billede Slettet bruger
24. maj 2005 - 18:36 #1
Jamen - hvorfor skal det lige præcist være eet udtryk.
I givet fald, hvilke kolonner skulle der så være?

En tabel kan jo have mange fremmednøgler. Skulle der så være kolonner
FREMMEDNØGLE_1, FREMMEDNØGLE_2, ..., FREMEDNØGLE_3.

Du er godt på vej, med de udtryk du har.

I Oracle 9i og 10g kan du også kigge på hvad du kan få ud af at bruge DBMS_METADATA:

DBMS_METADATA.GET_DDL ( <OBJECT_TYPE>, <OBJECT_NAME>, <SCHEMA_NAME>, ... )
Avatar billede mmbn Nybegynder
25. maj 2005 - 08:38 #2
det skal også være kompatibelt med oracle 8. Men oplysningerne jeg skal have ud er som følgende:
<tabel>
    <titel>XXXX</titel>
    <posttype>Fast</posttype>
    <feltdef>
        <titel>XXXX</titel>
        <datatype>num</datatype>
        <bredde>8</bredde>
        <feltinfo>XXXX</feltinfo>
        <feltfunk>XXXX</feltfunk>
    </feltdef>
    <feltdef>
        <titel>XXXX</titel>
        <datatype>date</datatype>
        <bredde>8</bredde>
        <feltinfo>XXXX</feltinfo>
    </feltdef>
  <pn>
        <titel>XXXX</titel>
    </pn>
    <fn>
        <titel>XXXX</titel>
        <fremmedtabel>
        <titel>XXX</titel>
        <titel>XXX</titel>
        </fremmedtabel>
    </fn>
    <tabelinfo>Tabel med oplysninger</tabelinfo>
</tabel>

det er målet. Så hvis udtrykket kan samles så man får alle oplysninger på en gang.
Avatar billede mmbn Nybegynder
25. maj 2005 - 13:36 #3
fandt svaret, så jeg lukker. Samler dem i hver deres xml fil og bruger data derfra.
Avatar billede Slettet bruger
25. maj 2005 - 19:21 #4
Må vi ikke høre, hvad svaret så var?
Avatar billede mmbn Nybegynder
26. maj 2005 - 08:55 #5
som ovenstående, og udtryk 2 er blevet:
select
    pk.table_name parent_table_name, pk.constraint_name pkey_constraint,
    fk.table_name child_table_name,  fk.constraint_name fkey_constraint, fk.r_constraint_name
from
    user_constraints pk,
    user_constraints fk
where pk.constraint_name = fk.r_constraint_name
and  pk.constraint_type='P'
and  fk.constraint_type='R'
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester