Tips zu Oracle
Funktion me_to_char
Verfügbar ab Version 23.1.81 Steht nur bei Datenbanken mit MapEdit Datenmodel zur Verfügung.
Bietet eine Funktion an die einen Zahlenwert gerundet und formatiert ausgibt.
Hierbei kann gewählt werden welche Zeichen als Dezimal und Tausender Trenner verwendet werden sollen.
Wird die Angabe von Punkt und Komma weg gelassen dann wird '.,' angenommen. Bei dem Parameter sind nur wertde zulässig die der Oracle "NLS_NUMERIC_CHARACTERS" Parameter erlaubt. Im Normalfall also ',.' oder '.,'
Beispiel:
select me_to_char(hoehe,2) from punkte;
select me_to_char(hoehe,2,'.,') from punkte;
Ausgabe:
1.002,12
Beispiel:
select me_to_char(hoehe,2,',.') from punkte;
Ausgabe:
1,002.12
Beispiel:
select me_to_char(hoehe,2,' .') from punkte;
Ausgabe:
1 002.12
Umwandeln von Texte in Zahlen
Problem: Man hat ein Textfeld (varchar2) in dem Zahlen und Texte stehen. Man will nun nur die Zahlenwerte in ein Numerisches Feld (number) kopieren. Ein Einfaches TO_NUMBER funktioniert hier nicht und laeuft auf einen Fehler da das Feld auch Texte enthaelt.
Lösung:
update strassen
set hausnummer = TO_NUMBER(hausnummer_als_text DEFAULT null ON CONVERSION ERROR)
where hausnummer_als_text is not null
Statt "null" kann auch ein zahlenwert angegeben werden der genutzt werden soll wenn keine Zahl vorhanden ist.
Beispiel zum anlegen fehlender Labels
Diese Beispiel nimmt als Geometrie den Zentroid eines Linien Features (Strasse) und fügt diesen in die Label Tabelle ein.
insert into STRASSEN_LBL (FID_PARENT, LABEL_TEXT, GEOM) select FID, strname, SDO_GEOM.SDO_CENTROID(SDO_GEOM.SDO_MBR(geom)) as GEOM from STRASSEN
Passwort Ablauf verhindern
Anmelden mit SYSTEM User
alter profile "DEFAULT" limit password_life_time unlimited;
Dies gilt nur für neue User. Bei vorhandenen Usern muss das Passwort nochmal gesetzt werden (kann das gleiche sein)
alter user MEIN_USER identified by mein_password
UNION von Tabellen mit Geometry Feldern
Wenn Sie Tabellen in einem SQL kombinieren wollen dann immer "UNION ALL" verwenden und nicht "UNION" da ansonsten Oracle einen Fehler wirft.
Richtig:
select fid,geom from park
union all
select fid,geom from library
Falsch:
select fid,geom from park
union
select fid,geom from library
ORA-22901: cannot compare VARRAY or LOB attributes of an object type