Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Direct Oracle Access und DESCRIBE TABLE (https://www.delphipraxis.net/32358-direct-oracle-access-und-describe-table.html)

tburch 22. Okt 2004 08:56


Direct Oracle Access und DESCRIBE TABLE
 
Erstmal ein "Gruezi" aus der Schweiz.

Ich verwende die DOA Komponenten 3.4.6.4 und möchte damit ein kleines Programm schreiben welches mir die Datenbank – Administration vereinfacht.

Oracle Version 8i.

Leider hänge ich schon früh beim ersten Problem fest.

Mit einem OracleDataSet und dem folgenden SQL frage ich alle Tabellen ab und fülle dies in ein DBGrid.

SELECT * FROM user_objects WHERE object_type = 'TABLE'

Soweit funktioniert alles noch wunderbar. Leider habe ich etwas höhere Ansprüche als nur alle Tabellen angezeigt zu haben. Jetzt möchte ich noch, wenn eine Tabelle ausgewählt wird die Attribute dieser Tabelle angezeigt werden.

Ich platziere wieder ein OracleDataSet in meinem Datenmodul und versuche es mit diesem SQL:

DESC Tabelle;

Leider gibt dies nur"ORA-00900: Ungültige SQL-Anweisung' zurück.

Das Problem ist für mich schwer nachvollziehbar da die Abfrage ansonsten funktioniert. (Wenn ich sie im TOAD eintippe, dann geht’s.)

Scheint so als würde OracleDataSet dieses SQL nicht unterstützt.

Wäre froh um Hilfe.

Mit freundlichen Grüssen

T.Burch

MaBuSE 22. Okt 2004 10:04

Re: Direct Oracle Access und DESCRIBE TABLE
 
Zitat:

Zitat von tburch
Ich platziere wieder ein OracleDataSet in meinem Datenmodul und versuche es mit diesem SQL:
DESC Tabelle;
Leider gibt dies nur"ORA-00900: Ungültige SQL-Anweisung' zurück.
Das Problem ist für mich schwer nachvollziehbar da die Abfrage ansonsten funktioniert. (Wenn ich sie im TOAD eintippe, dann geht’s.)

Scheint so als würde OracleDataSet dieses SQL nicht unterstützt.

Das liegt daran das DESC (DESCRIBE) kein SQL Befehl ist.

Wenn Du im TOAD DESC TableName eingibst, bekommst Du auch keine Antwort im Tabellenformat zurück, sondern ein extra Fester in dem Du die Felder, Index, ... sehen kannst.

Wenn Du die Infos via SQL bekommen möchtest, dann benutze die ALL_* Views (Owner = 'SYS')

SQL-Code:
select * from ALL_TAB_COLUMNS where OWNER = 'TEST' and TABLE_NAME = 'TEST'
Das klappt.
So kommt man auch an alle weiteren Infos ran
(Index, Rechte, ...)

Es gibt auch Systemtabellen in denen man den SQL-Text von Views, Trigger, StoredProcs, Package, ... entnehmen kann. (ALL_VIEWS, ALL_TRIGGERS, ...)

Eine Beschreibung der Tabellen findest Du im Handbuch von Oracle.

Es gibt noch ein paar Befehle, die kein SQL sind.
z.B. die SQL*PLUS Befehle -> z.B. @ und @@, /, &, COMP (COMPUTE), CON (CONNECT), ...
(SQL*PLUS ist das SQL Abfragetool von Oracle)

Ich hoffe diese Info hilft Dir.

ps: Herzlich willkommen bei der DP ;-)

tburch 22. Okt 2004 10:37

Re: Danke
 
Vielen Dank für Ihre Hilfe.

Es funktioniert jetzt wunderbar.
Werde mich aber trotzdem mal mit SQL bzw.
SQL * Plus beschäftigen.

Mit freundlichen Grüssen
T. Burch

MaBuSE 22. Okt 2004 10:42

Re: Danke
 
Zitat:

Zitat von tburch
Vielen Dank für Ihre Hilfe.

Gern geschehen.

In Foren wie diesem ist es üblich sich zu Dutsen.
Wir sind ja unter uns :mrgreen:

Alle Informationen über alle Objekte sind im Oracle via SQL zu ermitteln.
Es gibt jede Menge System Tabellen.

Die Views SYS.ALL_* kann ich Dir ans Herz legen, fang da an zu schauen.
Es ist einfacher diese Views zu benutzen als die System Tabellen direkt.
(Quelltext der Views mal anschauen ;-)

Viel Spaß
Dr. MaBuSE


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz