Zum Inhalt springen

dbwizard

Mitglieder
  • Gesamte Inhalte

    303
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von dbwizard

  1. - Hmmm, ich habe keine Ahnung von Cobra (ich weiss nicht mal, was das ist), aber die Fehlermeldung sagt in der Regel aus, dass ein Attribut in deinem SQL so nicht auf der Datenbank existiert, aus welchen Grund auch immer....
  2. - Nun, dann muss dein Kollege mit Oracle streiten. Ein Date ist....ein Date. Punkt. Interessant wäre noch zu erfahren, aus welchen Grund dein Kollege dies so haben will ? Gruss
  3. Hallo, Warum solltest du das tun ? Oracle speichert einen Zeitpunkt, bestehend aus Datum und Zeitanteil. Was du möchtest, ist eine Formatierung für die Ausgabe, das kannst du immer mit der entsprechenden Formatanweisung erreichen. Gruss
  4. - ...und hoffen, dass da nicht 1'000'000'000 Datensätze übers Netz zum Client hochzumpeln, umkehren und wieder zurück auf den 2. Server wandern. DBLink ist schon das richtige, oder exp/imp resp Datapump, oder Transpotrable Tablespace etc etc Gruss
  5. - Von wo aus willst du die Procedure aufrufen ? Java ? PL/SQL ? SQL ? [irgendwas] ?
  6. on b.pers_nr = bp.pers_nr an Meiner Meinung nach müsste dies on b.pers_nr = bp.pers_nr AND lauten. Gruss
  7. - Hallo, Ich würde PL/SQL immer in packages kapseln. mal als Beispiel...Du musst evtl. die Attributsnamen ändern, habe es nur so aus dem Bauch erstellt...ausserdem fehlt natürlich das Exceptionhandling etc CREATE OR REPLACE PACKAGE testapp.tst_film_pkg IS PROCEDURE fn_filme_genre ( i_nGenre_ID IN NUMBER, o_rcResult OUT SYS_REFCURSOR ); END; / CREATE OR REPLACE PACKAGE BODY testapp.tst_film_pkg IS PROCEDURE fn_filme_genre ( i_nGenre_ID IN NUMBER, o_rcResult OUT SYS_REFCURSOR ) IS l_nGenre_ID NUMBER; BEGIN l_nGenre_ID := i_nGenre_ID; OPEN o_rcResult FOR SELECT f.film FROM film f WHERE f.genre_id = l_nGenre_ID; END; END; / Gruss
  8. dbwizard

    Datenbankdesign

    Also, erstmal, die AS400 gibts tatsächlich noch. [/CODE] - Ja, das waren noch Zeiten .... [CODE]Mit dem Modell geht es jetzt lediglich um Stammdaten. Sprich, so sachen wie Firmenstamm (Mandantenfähigkeit), Lagerorte, Versandarten...vielleicht schon gar nicht mal mehr der Artikelstamm. Also wirklich nur Daten, von denen in jeder Tabelle so ca. 10 - 100 Datensätze existieren, und die auch selten verändert werden. - Trotzdem, ich würde jede Entität in eine Tabelle packen : 1. Ist für das Wartungsprogram genauso gut zu handhaben (Programmieren musst du so oder so 2. Was machst du, wenn einzelne Stammdaten untereinander oder mit den Appliaktionsdaten Beziehungen besitzten (Foreing Keys, andere Constriants). Nur mit einem sauberen Datenmodel lässt sich dies in der DB implementieren, ansonsten fängst du an, dies im Code zu implementieren --> Bad/Ugly/Bull* 3. Es skaliert besser 4. Es ist wartbar Hintergrund der ganzen Geschichte ist, dass wir statt der vielen vielen Stammdatenprogramme, die wir auf der AS400 haben, nur noch ein einziges Wartungsprogramm zu haben. - Hat mit dem gewählten Datenmodel nichts zu tun Nun, bedingt durch die AS400 Programmierung stehen wir in C# noch ganz am Anfang. Es wäre doch sicher auch möglich mit einem einzigen Programm auf unterschiedliche Tabellen zuzugreifen, oder? Also, dass ich mir per ComboBox meine Stammdatendatei wählen kann, und bekomme dann je nach auswahl die Tabelle "Lagerorte", oder "Firmen", oder "Artikel" angezeigt... Wenn das einfach zu machen wäre, wäre das glaub ich das Argument gegen das Modell, das unser Chef vorgeschlagen hat. - Das ist kein Problem mit Stammdaten in einzelnen Tabellen, im Gegenteil (Wir haben diverse solche Administrationstools so gebaut...) Gruss
  9. dbwizard

    Datenbankdesign

    HI, (Wusste gar nicht, dass es die AS/400 noch gibt :-)) - Dieses Design ist nicht nur nicht sinnvoll, sondern (Verzeihung) völliger Murks. Du arbeitest mit einer Relationalen DB...also modeliere die Entitäten und Releationen. Also, keine Felder, welche irgendwelche gesammelten Informationen als String beinhalten, da du so das Konzept einer SQL DB ad absurdum führtst. ich möchte nicht derjenige sein, der die entsprechenden Abfragen auf solche einem System macht. Gruss
  10. - Sorry, da muss ich mich ausblenden, davon habe ich Null Ahnung :-)
  11. - Welches DBMS ? Eines deiner Zeichen im SQL wird von deinem Client als Replacestring erkannt, ich tippe auf das "/" - Im übrigen würd ich Feldnamen mit Leerzeichen mit allen Mitteln vermeiden....
  12. Geht bei mir... Guckst du : SQL*Plus: Release 10.2.0.2.0 - Production on Thu May 8 12:55:47 2008 Copyright (c) 1982, 2005, Oracle. All Rights Reserved. Enter password: Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> CREATE TABLE testtable (ID NUMBER, datum DATE, datum_2 DATE) / Table created. SQL> INSERT INTO testtable VALUES (1, '01-JAN-2008', '04-JAN-2008') / 1 row created. SQL> SELECT (t.datum_2 - t.datum) AS differeenz FROM testtable t / DIFFEREENZ ---------- 3 SQL> Gruss
  13. - Hmmm, bei mir geht es...Welches Format haben den deine "Date"-Spalten ?
  14. - Hallo, ich weiss nicht mal, was der Fehler ist :-) . Was läuft denn nicht ? Fehlermeldung oder einfach nicht erwartete Ergebnisse ? Bitte etwas näher spezifizieren Gruss Gruss
  15. dbwizard

    alter Table

    -Darf ich fragen, was der Grund dafür wäre, dass eine Spalte an einer bestimmten Position in der Tabelle stehen soll ?
  16. Hallo, Alternativ kannst du mal folgenden Artikel anschauen : Virtualize Your Oracle Database with Web Services Da wird dass ganze als Java WebService Stack in die DB geladen. Du findest dort alle notwendigen INfo's Gruss
  17. - Du kannst dir die Anführungszeichen sparen.... --> SELECT Irgenwas as bla...NICHT as "bla"... Gruss
  18. SELECT * FROM Tabelle1 WHERE Rownum < 10000 (Der OP hat Oracle, wie ich von einem früheren Post weiss :-))
  19. Hallo Die größe des rollback kannich nicht vergrößern, weil ich nicht die rechte dafür hab. - Dann frag doch jemanden, der die Rechte hat ? - Frage : Wird dies Aktion regelmässig durchgeführt, z.b. monatlich oder so ? Dann wäre es eine Möglichkeit, die Tabelle entsprechend zu partitionierern. Ansonsten kann ich mich den Aussagen von Dimitri anschliessen Gruss
  20. - Könntest du mal die Struktur der 3 Tabellen posten ? Mir ist irgendwie nicht klar, wieso du 3 Tabellen brauchst, um eine PLZ-Ort Beziehung abzubilden
  21. Hallo, Vielleicht wäre das die Lösung : Using Regular Expressions in Oracle Database Mit Regular Expression kannst du solche Probleme lösen Gruss
  22. Also, ich habe mal ein Beispiel gemacht, mit deinen Daten.... oracle@CHTHL-TUX-ORACLE2:/usr/data/oracle/scripting/dba> sqlplus m_hoko/m_hoko SQL*Plus: Release 10.2.0.2.0 - Production on Thu Apr 3 14:26:26 2008 Copyright (c) 1982, 2005, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> spool test.txt --> Mal eine Testtabelle erstellen... SQL> CREATE TABLE testdatum (datumswert VARCHAR2(20)) / Table created. --> und ein paar Testdaten, gemäss deiner Liste.... SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('12.10.2006') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('12.10.2006') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('14-MAR-07') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('20-JUL-05') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('20-JUL-05') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('20-JUL-05') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('11.06.2006') / 1 row created. SQL> INSERT INTO testdatum ("DATUMSWERT") VALUES ('31.03.2007') / 1 row created. SQL> SELECT * from testdatum 2 / DATUMSWERT -------------------- 12.10.2006 12.10.2006 14-MAR-07 20-JUL-05 20-JUL-05 20-JUL-05 11.06.2006 31.03.2007 8 rows selected. --> Hier die Konvertierung, direkt als Update.... SQL> update testdatum SET datumswert = to_date(datumswert,'dd.mm.yyyy') / 8 rows updated. --> mal gucken, was rausgekommen ist... SQL> SELECT * from testdatum / DATUMSWERT -------------------- 12.10.2006 00:00:00 12.10.2006 00:00:00 14.03.0007 00:00:00 20.07.0005 00:00:00 20.07.0005 00:00:00 20.07.0005 00:00:00 11.06.2006 00:00:00 31.03.2007 00:00:00 8 rows selected. --> Das wär dein Ziel gewesen ? SQL> SQL> spool off SQL> - ich hoffe, das hilft dir weiter.... Gruss
  23. - Das kannst du vorgängig überprüfen, indem du nur einen Select (anstelle eines Updates) machst und dass Ergebnis analysierst. Wenn es ok ist, kannst du diese Konvertierung für den Update verwenden Gruss
  24. - OK :-)--... ich würde so vorgehen : 1. Neues Attribut [NeuesDatumsFeld] (oder wie auch immer du dies bezeichnen willst) in der [ursprungstabelle] : vom Typ DATE (unbedingt :-)) 2. Update Ursprungstabelle SET NeuesDatumsFeld = (to_date(AltesDatumsfeld,[HierDeinGewünschtesDatumsFormat]) 3. Überprüfen, ob alles korrekt im neuen Feld ist 4. Eventuell Views / Code / etc anpassen, so dass ab nun neues Feld verwendet wird. Gruss
  25. Nein. Dieser Teil deiner Abfrage : (SELECT to_char(to_date(datumsspalte,'DD-MON-YY'),'DD.MM.YYYY') FROM ursprungstabelle where exists ( select a from zwischentabelle where ursprungstabelle.datumsspalte=zwischentabelle.a )) ...gibt dir für jeweils eine Zeile der Ursprungstabelle mehr als EINEN Wert zurück...Wie soll die DB wissen, welchen wert aus der Subquery nun in die Ursprungsspalte geschrieben werden soll ?

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...