ORACLE: Gross - Kleinschreibung

Hallo,

bin totaler Neuling auf dem Gebiet.
Und wollte fragen, ob es mit Oracle möglich ist Tabellen bzw. Spalten zu erstellen, wo im Namen sowohl Klein- als auch Grossbuchstaben vorkommen können.

Momentan erstelle ich z.B. eine Tabelle mit
Create tabele GebDat (Name VARCHAR(20), Datum VARCHAR(15));
Daraus wird dann die Tabelle GEBDAT mit Spalten NAME und DATUM erstellt.
Wenn ich dann über ODBC mit INSERT INTO oder SELECT Anweisung auf die Spale „Name“ zugreifen will, sagt mir mein Compiler „ORA-00904,Ungültiger Spaltenname“.

Nun weiss ich je nicht an welcher schraube ich drehen soll. Im ganzen Quellcode(nicht von mir geschrieben) Name auf Name (ausserdem existieren zig tausende weitere Bezeichnungen) umzubiegen wäre unmöglich.
Liegt es am ODBC Treiber oder muss man vielleich im ORACLE was einstellen.
Benutze Oracle 9.2 mit dem dazugehörigen ODBC Treiben von ORACLE, weil ich mit dem ODBC von MS gar nicht zurecht kam.

Ich bedanke mich im Voraus
Alex

Hallo Al,

bin totaler Neuling auf dem Gebiet.

macht nix - alle haben mal angefangen.

Und wollte fragen, ob es mit Oracle möglich ist Tabellen bzw.
Spalten zu erstellen, wo im Namen sowohl Klein- als auch
Grossbuchstaben vorkommen können.

Klar, wenn du die Objektnamen (Spalten, Tabnamen etc.) nicht explizit in Hochkommata einschließt, ignoriert Oracle jede Gross- / Kleinschreibung (intern werden die Bezeichner in den Systemtabellen GROSS gespeichert).

Momentan erstelle ich z.B. eine Tabelle mit
Create tabele GebDat (Name VARCHAR(20), Datum VARCHAR(15));
Daraus wird dann die Tabelle GEBDAT mit Spalten NAME und DATUM
erstellt.
Wenn ich dann über ODBC mit INSERT INTO oder SELECT Anweisung
auf die Spale „Name“ zugreifen will, sagt mir mein Compiler
„ORA-00904,Ungültiger Spaltenname“.

Bei mir geht alles (siehe SQLPLUS Sessionmitschnitt):

sqlplus user/password # nein, das ist nicht mein Password!

SQL\*Plus: Release 8.1.7.0.0 - Production on Fri Jun 10 13:37:29 2005

(c) Copyright 2000 Oracle Corporation. All rights reserved.


Connected to:
Oracle8i Enterprise Edition Release 8.1.7.3.0 - Production
With the Partitioning option
JServer Release 8.1.7.3.0 - Production

SQL\> create table GebDat (Name VARCHAR(20), Datum VARCHAR(15));

Table created.

SQL\> desc gebdat
Name Null? Type
----------------------------- -------- ----------------------------
NAME VARCHAR2(20)
DATUM VARCHAR2(15)

SQL\> select \* from GebdAt;

no rows selected

SQL\> insert into gebdat (NaMe, DAtum) values ('mister x', '01.10.1970');

1 row created.

SQL\> select \* from gebdat;

NAME DATUM
-------------------- ---------------
mister x 01.10.1970

SQL\> drop table gebdat;

Table dropped.

SQL\> quit

Also Gross-/Klein wird normalerweise (in >99.99% aller Fälle) komplett ignoriert - man muss sich schon sehr anstrengen, um so ein Verhalten zu erzwingen (und das macht auch keiner - nicht das Anstrengen).

Nun weiss ich je nicht an welcher schraube ich drehen soll. Im
ganzen Quellcode(nicht von mir geschrieben) Name auf Name
(ausserdem existieren zig tausende weitere Bezeichnungen)
umzubiegen wäre unmöglich.

Probier doch erstmal an einem sehr kleinen Testprog. aus, was denn eigentlich schiefgeht. Poste dann mal genau deine Fehlermeldungen (und wie sie erzeugt wurden).

Liegt es am ODBC Treiber oder muss man vielleich im ORACLE was
einstellen.
Benutze Oracle 9.2 mit dem dazugehörigen ODBC Treiben von
ORACLE, weil ich mit dem ODBC von MS gar nicht zurecht kam.

Ich bedanke mich im Voraus
Alex

Bitte.
gruss
bernhard

PS: warum legst du die Spalte DATUM als VARCHAR an? Sollte man da nicht besser DATE nehmen?

Hallo Bernhard,

danke erstmal für deine Antwort

Bei mir geht alles (siehe SQLPLUS Sessionmitschnitt):

Bei mir geht das auch im SQLPLUS, abir nicht aus dem C++ Prog.
Das hängt alles mit dem ODBC Treiber oder Recordset-Objekten zusammen.

Um daten abzufragen oder zu schreiben habe ich eine Klasse vom CRecordset abgeleitet um auf gewünschte Tabelle zuzugreifen. Unten eine Methode davon:

void CDBBenutzer::smiley:oFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CDBBenutzer)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[Kuerzel]"), m_Kuerzel);
RFX_Text(pFX, _T("[Name]"), m_Name);
RFX_Long(pFX, _T("[BeraterNr]"), m_BeraterNr);
RFX_Text(pFX, _T("[Passwort]"), m_Passwort);
RFX_Text(pFX, _T("[Rechte]"), m_Rechte);
//}}AFX_FIELD_MAP
}

Hier liegt auch das Problem.
Wenn ich hier z.b. Kuerzel gross schreibe (KUERZEL) funzt alles.

PS: warum legst du die Spalte DATUM als VARCHAR an? Sollte man
da nicht besser DATE nehmen?

Das war einfach ein Beispiel :wink:

Was mich auch stört : wenn ich MS ODBC Treiber für Oracle nehme, weigert der sich so eine simple Create -Anweisung auszuführen wie:

CREATE TABLE TEST(ZAHL INTEGER);

Komisch, nicht wahr?

MfG Alex

Was mich auch stört : wenn ich MS ODBC Treiber für Oracle
nehme, weigert der sich so eine simple Create -Anweisung
auszuführen wie:

CREATE TABLE TEST(ZAHL INTEGER);

Also MS ODBC Treiber für Oracle sollte man eigentlich nicht verwenden.
Lade lieber den ODBC-Treiber von Oracle herunter.

Teste mal CREATE TABLE „TEST“(„ZAHL“ INTEGER);
oder CREATE TABLE ‚TEST‘(‚ZAHL‘ INTEGER);