Spaltennamen?

Hallo,

wie kann ich per SQL-Statement die Spaltennamen einer Tabelle rausfinden?

Gruß
Jochen

wie kann ich per SQL-Statement die Spaltennamen einer Tabelle
rausfinden?

Show fields from tablename

Marian

Hi,

Oder auch so:

select column_name from user_tab_columns where table_name = ‚TABELLENNAME‘;

Wie Du siehst, ist die Methode je nach RDBMS unterschiedlich. Wüßten wir mehr, bekämst Du mehr erzählt :smile:

Gruß

J.

hi!

select column_name from user_tab_columns where table_name =
‚TABELLENNAME‘;

na wenn schon, dann gleich „from sys.dba_tab_columns where owner=‚SYS‘“ oder so :wink:

oder auch ganz einfach mit einem "desc[ribe] ", wenn man sich’s nur so anschaun will …

grüße,
tomh

Ugh!

na wenn schon, dann gleich „from sys.dba_tab_columns where
owner=‚SYS‘“ oder so :wink:

Warum denn? Erstens ist dies absolut äquivalent (der View USER_TAB_COLUMNS macht nix anderes). Zweitens aber würde das ein SELECT-Privileg auf sys.dba_tab_columns voraussetzen, was einen Sonderfall darstellt; user_tab_columns geht immer.

oder auch ganz einfach mit einem "desc[ribe] ",
wenn man sich’s nur so anschaun will …

Das ist allerdings kein SQL, sondern ein Kommando von SQL*Plus.

Gruss

J.

Ugh!

na wenn schon, dann gleich „from sys.dba_tab_columns where
owner=‚SYS‘“ oder so :wink:

Warum denn? Erstens ist dies absolut äquivalent (der View
USER_TAB_COLUMNS macht nix anderes). Zweitens aber würde das
ein SELECT-Privileg auf sys.dba_tab_columns voraussetzen, was
einen Sonderfall darstellt; user_tab_columns geht immer.

*grmpf* - anleitung für anwender, die zum herumprobieren anfangen (keine sorge, der dba wird schon alles wieder in ordnung bringen)
declare
cursor mal_gehoert is select sachen from hintersten_winkel
where erinnerung like ‚%SYS%‘;
begin
for cur_mg in mal_gehoert loop
execute cur_mg.sachen;
end loop;
end;

es ist _beinahe_ äquivalent, da du bei den user_*-views nur für den eingeloggten user die objekte siehst, und im normalfall ja eigentlich ein user keine objekte, sondern nur berechtigungen haben soll, ev. noch synonyme …

oder auch ganz einfach mit einem "desc[ribe] ",
wenn man sich’s nur so anschaun will …

Das ist allerdings kein SQL, sondern ein Kommando von
SQL*Plus.

das schon, nur die felder krieg ich so auch raus … und aus der fragestellung war zumindest mir nicht ganz klar (oder ich hab’s ganz einfach überlesen), ob das ganze programatisch oder nur so zur information sein soll …

grüße,
unhandled exception tomh

es ist _beinahe_ äquivalent, da du bei den user_*-views nur
für den eingeloggten user die objekte siehst, und im
normalfall ja eigentlich ein user keine objekte, sondern nur
berechtigungen haben soll, ev. noch synonyme …

Hmmm. Also aus der Fragestellung ging es nicht hervor.
Einigen wir uns auf all_tab_columns - das darf der Anwender immer, und er sieht auch die Dinge, die ihm nicht gehören.

Der normale Anwender sollte m.E. NIE sys.irgendwas ansprechen. Er sollte sich mit dem begnügen, was der Administrator ihm zugesteht. Daß dies häufig Synonyme sind, die auf Sys-Objekte verweisen, sei unbenommen!

Gruß

J.

Der normale Anwender sollte m.E. NIE sys.irgendwas ansprechen.
Er sollte sich mit dem begnügen, was der Administrator ihm
zugesteht. Daß dies häufig Synonyme sind, die auf Sys-Objekte
verweisen, sei unbenommen!

naja, hm, wenn ich mir so meine entwicklungskollegen beispielsweise anschaue, haben einige äußerst wenig rechte auf die tabellen, brauchen aber unbedingt diverseste sys-informationen …

der _normale_ anwender sollte gar nie in die db reinschaun … manche schaffen’s, mit einem einzigen select (sagen zumindest sie), die db abzuschießen …

all_users klingt ok … und nochmals an alle anwender: SYS ist verboten und man kriegt krätze davon, wenn man’s schreibt :wink:

grüße,
tomh