metleck Geschrieben 10. November 2006 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!
mme Geschrieben 10. November 2006 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....
metleck Geschrieben 10. November 2006 Autor 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?!
mme Geschrieben 10. November 2006 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....???
metleck Geschrieben 10. November 2006 Autor Geschrieben 10. November 2006 Irgendwas mach ich falsch... der hängt sich immer auf und ballert den tablespace voll
metleck Geschrieben 13. November 2006 Autor 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
metleck Geschrieben 14. November 2006 Autor 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden