metleck Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 Hey! So ich nutze Oracle 10g und PL/SQL. So nun die Idee: Ein User soll ein Startdatum des Jahres oder des Monats in ein Feld eingeben können z.B. 01.01.2007 und dann auf "erstellen" klicken. Dann soll der ganze Monat oder das ganze Jahr in der Tabelle angelegt werden. Zu dem Datum soll dann in einer anderen Spalte auch noch der Wochentag angezeigt werden. Kennt jemand sowas? Oder hat nen Link? Vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 willst du jetzt eine fertige Funktion oder willst du hilfestellung das selber zu machen?? Es ist ziemlich leicht... Es gibt solche Funktion wie next_day (um mit dem Wochendag klar zu kommen) oder last_day (wieviele Tage hat ein Monat) und weitere.... Damit kann man sich das in sehr kurzer Zeit in pl/sql zusammen schreiben, sodas man in seinem Programm nur noch diese pl/sql funktion aufrufen muss.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. November 2006 Autor Teilen Geschrieben 10. November 2006 Hey! Also mir wäre beides recht wobei das schon fertige besser wäre.Ich komm einfach nicht weiter! Ich hab das hier mal versucht: WHILE (IN_MONATNEU < '31.01.2007') LOOP IN_MONATNEU:=IN_MONATNEU+1; INSERT INTO T_LOTTO_DATEN (ZIEHUNGSDATUM) VALUES (IN_MONATNEU); EXIT WHEN IN_MONATNEU = '31.01.2007'; END LOOP; Aber das Problem ist ja das ich so eine Schleife für jeden Monat schreiben müsste. Würde ich das Enddatum auf 31.12.2007 setzen, würde es wahrscheinlich garnicht gehen. Ich guck mir die beiden Befehle nochmal an die du grad gepostet hast, vielleicht gibts ja sowas fertig?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 eine Schleife die 12 mal durchläuft (anzahl der Monate) und im eingegebenen Monat startet. Also wenn ein User 01.07.2007 eingibt läuft diese Schleife von 7-12. Darin eine innere Schleife die von 1 bis last_day(01."Monat der äußeren Schleife".2007). In dieser inneren Schleife kannst du nun für jeden Tag einen Insert in deine Tabelle machen, mit dem Zaehler der inneren Schleife als Tag und mit dem Zaehler der äußeren Schleife als Monat. Fertig. Damit kann ein beliebigies datum eingegeben werden und es wird für jeden Tag bis zum Jahresende ein tag in die Tabelle geschrieben. Das ganze nun als code und nicht verbal und fertig....??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. November 2006 Autor Teilen Geschrieben 10. November 2006 ja genau das Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. November 2006 Autor Teilen Geschrieben 10. November 2006 Irgendwas mach ich falsch... der hängt sich immer auf und ballert den tablespace voll Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 13. November 2006 Teilen Geschrieben 13. November 2006 poste mal den code den du hast... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 13. November 2006 Autor Teilen Geschrieben 13. November 2006 NEUER_MO DATE := IN_MONATNEU; Begin ... <input name="IN_MONATNEU" type="text" value="'||IN_MONATNEU||'" size="30" maxlength="30">. .. IF (B6 = 'Speichern') THEN WHILE (TO_CHAR(IN_MONATNEU) <= TO_CHAR(LAST_DAY(IN_MONATNEU))) LOOP INSERT INTO T_LOTTO_DATEN (ZIEHUNGSDATUM) VALUES (NEUER_MO); NEUER_MO := NEXT_DAY(NEUER_MO,'MONTAG'); NEUER_MO := NEUER_MO+1; EXIT WHEN NEUER_MO = '31.01.2007'; END LOOP; So das ist die Fehlermeldung:Fehler (-1841): ORA-01841: (Volles) Jahr muss zwischen -4713 und und +9999 liegen und darf nicht 0 sein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 14. November 2006 Autor Teilen Geschrieben 14. November 2006 okay ich habs verändert: IF (B6 = 'Speichern') THEN WHILE (TO_DATE(NEUER_MO)) = TO_DATE(LAST_DAY(NEUER_MO) ) LOOP INSERT INTO T_LOTTO_DATEN (ZIEHUNGSDATUM) VALUES (NEUER_MO); NEUER_MO := NEXT_DAY(NEUER_MO,''); NEUER_MO := TO_DATE(NEUER_MO+1); END LOOP; END IF; Leider passiert nun garnichts Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.