Zum Inhalt springen

dr.dimitri

Mitglieder
  • Gesamte Inhalte

    1276
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von dr.dimitri

  1. Oder alternativ: select column_name, data_type, data_length from user_tab_cols where table_name='Dein_Tabellenname' order by column_id; Dim
  2. Crosspost
  3. dr.dimitri

    Sql?

    Und wie. Ich behaupte vielmehr, dass man nur mit SQLs viele Möglichkeiten die die Datenbank bietet überhaupt nicht ausnutzt. Das ist ganz von der Datenbank abhängig. MSSQL bietet z.B. T-SQL an, in Oracle gibt es PL/SQL, mit dem Du so ziemlich alles machen kannst. Von Webentwicklung (Application Express), Messaging (AdvancedQueuing), diversen Administrative Tätigkeiten, bis hin zu ETL und Datenverarbeitung rauf und runter kannst damit alles machen. Über Java wird das ganze dann per CallableStatement angesprochen. Dim
  4. Ja und das bedeutet, dass man hier die Spalten angiebt. Siehe meine Anmerkung: In der Tabelle die Du gepostet hast, ist das Feld ANR und ARTIKEL_ANR enthalten. Da ich nicht weißt was es sonst sein soll, gehe ich davon aus, dass es sich zweimal das gleiche Feld ist, warum auch immer, und befülle es auch zweimal mit dem gleichen Wert. Dim
  5. Wie meinst das? Wenn die ON Klausel nicht erfüllt ist, dann wird NOT MATCHED ausgeführt. MERGE entscheidet anhand der ON Klausel ob ein insert oder ein Update stattfinden soll. Dim
  6. Gewöhn dir mal einen anderen Ton an wenn Du mit mir sprichst. Ich habe lediglich beschrieben, wie es in vielen (vor allem größeren) Firmen gehandhabt wird. Da wird man dann (z.T. noch gesponsort durch die Firma) ab 57 (evtl, auch schon ab 55) in die (freiwillige) Arbeitslosigkeit entlassen. Man bekomt dann (je nach Modell) eine Einmalzahlung, die den Verdienstausfall etc. bis zum Renteneintritt beinhaltet (abzüglich der Arbeitslosengeldes natürlich) sowie Unterstützung durch die Firma falls das Arbeitsamt dummerweise mit Jobangeboten daherkommt. Glaubst Du das sowas gemacht wird? Bei uns gibts eine eigene Abteilung, die genau das macht. Im Prinzip asozial aber Realität. Immer wenn Du in den Pressemeldungen ließt, dass sounsoviele Stellen gestrichen werden, aber auf betriebsbedingte Kündigungen weitgehend verzichtet werden soll läuft u.a. sowas das ab. Dim
  7. Hmm ja ich fürchte, da hast Du nicht ganz unrecht. Du bist dann in dem Alter, in dem manche Firmen ihre langjährigen Mitarbeiter langsam darüber zu informieren beginnen, wie sie sich das mit der Frühverrentnung in ein paar Jahren so vorstellen. Findet die Umschulung in einem Betrieb statt oder ist das eine rein schulische Maßnahme um die Statistik auf kosten des Steuerzahlers für die Merkel etwas zu schönen? Wenn überhaupt, würd ich auf Anwendungsentwicklung umschulen vor allem, wenn Du evtl. aus deiner vorangegangen Tätigkeit fachliche Kenntnisse mitbringen kannst (z.B. Versicherungs- oder Bankkaufmann oder eine andere Tätigkeit die stark auf IT baut bzw. dabei ist das aufzubauen). Viele Firmen (vor allem größere) suchen nämlich solche Mittelsmänner sie sowohl als auch können und zwischen den beiden Gebieten "übersetzen" können. Dim
  8. Richtig. Siehe hier Dim
  9. Naja ein kurzer Brief. Sehr geehrter Herr sowieso, hiermit kündige ich Wirkung zum sounsovielten meinen Ausbildungsvertrag. Datum, Ort Unterschrift Kündigungsfrist beträgt in der Probezeit 1 Tag Dim
  10. dr.dimitri

    CursEr in Java?

    Hmm ich denke, Du meinst ncurses. Das ist eine Bibliothek, mit dem sich Oberflächen auf der Kommandozeile entwickeln lassen. Etwas ähnliches gibt es auch für Java: CHARVA: A Java Windowing Toolkit for Text Terminals Dim
  11. Wo ist denn genau das Problem? Du legst eine entsprechende Tabelle an und speicherst per INSERT die Daten. Mittels SELECT kannst Du sie wieder lesen. Dim
  12. Hmm eigentlich nichts. Das ist eigentlich die Ausgabe, wenn Daten importiert wurden. Bist Du sicher, dass Du in der richtigen Tabelle im richtigen Schema nachgesehen hast? Dim
  13. Na langsam wirds ja was, aber ein paar Sachen sind da schon noch. 1. Ein SELECT ... INTO funktioniert nur, wenn man genau einen Rückgabewert bekommt. 2. Du möchtest eine Anzahl wissen, änderst aber (von der Logik her) die SNR. Leider fehlen in dem Datenmodell die Angabe der PK Felder, ich nehm daher mal an, dass das erste Feld der PK ist. Ich würde folgendermaßen vorgehen: 1. Herausfinden für welchen Spediteur (SNR) die Versandposition bestimmt ist. 2. Ermitteln, wieviele dieser Artikel der Spediteur bekommen hat. Dazu joinen wir wiederum versand und versandposition, diesmal allerdings zählen wir die Einträge (im übrigen ist das ein potentieller Bug, bei dem ein Mutating Table Fehler auftreten kann, sobald man einen INSERT INTO ... SELECT verwenden und keinen INSERT INTO ... VALUES(). daher ist das Beispiel wie gesagt absolut nicht praxistauglich. Kannst dem Aufgabensteller ausrichten). 3. Jetzt haben wir alles was wir brauchen und speichern das in der Tabelle Spediteurstatistik ab. Da wir nicht wissen, ob es für diesen Spediteur schon einen Eintrag gibt (könnt ja auch ein ganz neuer sein), verwenden wir dazu den MERGE Befehl. CREATE OR REPLACE TRIGGER TRG_INSERT_VERSANDPOSITION AFTER INSERT ON VERSANDPOSITION FOR EACH ROW DECLARE l_snr NUMBER; l_posCount NUMBER; BEGIN --1. Den Spediteur herausfinden. SELECT vers.snr INTO l_snr FROM versand vers WHERE vers.vnr=:new.versand_vnr; --Hier verwenden wir die :new.Spaltenname Sytax um auf den neu eingefügten Wert zugreifen zu können --2. Wir kennen jetzt den Spediteur, jetzt finden heraus, wieviele Artikel dieser Versandposition er schon bekommen hat --Da auf die Tabelle vertragposition zugegriffen wird, ist das ein potentieller Bug der einen ORA-04091 zur Folge hat. SELECT COUNT(vp.vnr) INTO l_posCount; FROM versand vers, vertragposition vp WHERE vers.snr=l_snr --Der vorher ermittelte Spediteur AND vers.vnr=vp.versand_vnr --Seine Versandpositionen AND vp.artikel_anr=:new.artikel_anr; --Für diesen speziellen Artikel --3. Wir haben jetzt den Spediteur, den Artikel und die Anzahl der Positionen für diesen Artikel --Jetzt aktualisieren wir die Tabelle Spediteurstatistik bzw. fügen eine neue Zeile ein, falls diese noch nicht existiert. --Dazu existiert in Oracle der MERGE Befehl MERGE INTO spediteurstatistik dest USING (SELECT l_snr AS snr ,l_posCount AS menge, :new.artikel_anr AS anr FROM dual) src ON (dest.spediteur_snr=src.snr AND dest.anr=src.anr) WHEN MATCHED THEN UPDATE SET dest.menge=src.menge WHEN NOT MATCHED THEN INSERT(snr,spediteur_snr,artikel_anr,anr,menge) VALUES(seq_stat.nextval,dest.snr,dest.anr,dest.anr,dest.menge); END; / Im Merge Befehl verwende ich eine Sequence um den PK für einen neuen Satz festzulegen. Die musst Du vorher anlegen damit sich der Trigger komplilieren lässt. create sequence stat; Was mir noch aufgefallen ist: warum wird in der Statistiktabelle Zweimal die ANR abgelegt? Naja der Aufgabensteller wird das schon wissen :upps Dim PS: ich hab das jetzt einfach mal so runtergeschrieben - könnte also sein, dass sich noch der ein oder andere Fehler eingeschlichen hat, aber das kannst Du dann ja erledigen.
  14. Also ich hab das jetzt auch mal gemacht. Hab mir den Tarball für 64 Bit systeme gezogen und installiert: What is the location of the directory of C header files that match your running kernel? [/lib/modules/2.6.25.16-0.1-default/build/include] Extracting the sources of the vmmon module. Building the vmmon module. Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config0/vmmon-only' make -C /lib/modules/2.6.25.16-0.1-default/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/linux-2.6.25.16-0.1-obj/x86_64/default' make -C /usr/src/linux-2.6.25.16-0.1 O=/usr/src/linux-2.6.25.16-0.1-obj/x86_64/default/. modules CC [M] /tmp/vmware-config0/vmmon-only/linux/driver.o CC [M] /tmp/vmware-config0/vmmon-only/linux/hostif.o ... Keine Probleme. Hast Du auch die aktuellste Version und richtige Architektur genommen? Dim
  15. Also ich hab auch die 11er. Du müsstest das Paket schon haben. Dim
  16. Hi, ich hab den vmware-server am laufen, und ich vermute mal, Du brauchst auch noch das linux-kernel-header Paket. Dim
  17. Schon mal den Akku entfernt? ich kann mir nicht vorstellen, dass die Microwelle das Teil derart eindampft, dass sich überhaupt nichts mehr rührt. Dim
  18. Richtig. Das komplette Gerüst würde aber so aussehen: create or replace trigger trg_insert_Versandposition after insert on Versandposition for each row declare --Hier Variablendeklarationen rein falls notwendig begin --mach was NULL; --Wird nur benötigt, solange kein weiterer Code hier drin steht. end; An die Werte kommst Du per : new dran: :new.VNR Aber ich würd, wie gesagt, erstmal die eigentlichen Selects/Updates ohne Trigger machen dann siehst beim Ausfüren gleich welches Ergebnis sie bringen. Dim
  19. Also ich würde so anfangen, dass Du erstmal die rohen SQLs baust Innerhalb eines Triggers hast Du ja alle Daten die in die Tabelle eingefügt werden sollen über die :new.spaltenname Struktur. Jetzt geh das ganze einfach mal Schritt für Schritt durch. Mach also einen Insert in die Positionstabelle und nimm dann die entsprechenden Werte aus diesem insert um manuell die Spediteurstabelle entsprechend zu ändern. Sobald Du das nämlich hast, muss nur noch ein Standardtriggergerüst drüber und fertig. Dim
  20. Ok. Bei Oracle kann ich dir weiterhelfen. Was hast denn bisher schon geschafft? Hast Du zumindest grundlegende Grundlagen in PL/SQL (das ist die Programmiersprache in der der Trigger geschrieben wird). Hier mal die Grundlagen zu Triggern. Dim
  21. Nun zum einen wissen wir nicht, welche Db Du verwendest - das wäre nicht ganz unerheblich. Ein Trigger in Oracle sieht anders aus als einer in MSSQL, DB2 oder PostgreSQL. Des weiteren wird sich hier wohl keiner finden, der dir einfach so die Hausaufgabe runterschreibt. Und last but not least, kannst Deinem Lehrer von mir ausrichten, dass fachliche Logik in einem Trigger nichts, aber auch gar nichts verloren hat. Kannst ihn ja mal fragen, wie er denkt, dass sich das ganze verhält, wenn sagen wir mal 20,30 oder mehr Personen gleichzeitig hier Daten ändern - mal davon abgesehen, dass man solche Daten in einem OLTP System nicht on the fly berechnen, sondern, falls benötigt, zur Laufzeit per SQL berechnen lässt. Aber das nur am Rande. Dim
  22. Genau.
  23. Seltsam. Ich musste eben diesen Lizenzbestimmungen zustimmen als ich grade mal testweise versucht hab den JDBC Treiber herunterzuladen. Dim
  24. Du kannst mit dem sqlloader natürlich auch Daten nachladen.Dazu musst Du nur in der Kontrolldatei einfach nur APPEND angeben: INFILE 'deine_datei' APPEND INTO TABLE deine_tabelle Dim
  25. Hi, also wenn ich auch noch meinen Senf dazu geben darf : 1. Ein PK ist impliziet schon Unique. Da brauchst Du keinen extra Unique Constraint mehr drauf setzen. 2. Ich kann nur dringendst empfehlen keine fachlichen Spalten als PK zu verwenden. Egal wie unveränderbar fest die auch momentan sein mögen. Fachliche Spalten haben in einem rein technischen PK nichts verloren. Dann braucht man auch keine seltsamen Kapriolen zu drehen. Das würde dann z.B. so aussehen: CREATE TABLE tabelle1 ( id number primary key, nummer varchar(9) NOT NULL, Jahr Numeric(4) NOT NULL, nummer2 varchar(9) NOT NULL ); CREATE TABLE IGFALL ( id primary key, id_tabelle1 references tabelle1, kh_id varchar(9) NOT NULL, kd_jahr Numeric(4) NOT NULL, fa_id Numeric(6) NOT NULL ); 3. Der Datentyp in Oracle heißt VARCHAR2. Auch wenn varchar erlaubt ist, ist er grundsätzlich for future use reserviert. Oracle rät davon ab VARCHAR zu verwenden. Dim

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...