LordPalme Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 (bearbeitet) Hi Jungs , ich möchte in sql eine Funktion schreiben die mit die monate als name ausgibt bis jetzt habe ich es so geschreiben : DELIMITER // CREATE FUNCTION monatsname(Monat DATE) RETURNS VARCHAR(15) BEGIN CASE monate(monat) WHEN MONTH(CURDATE()) = 1 THEN RETURN "Januar"; nun möchte ich diesen text nicht 12 mal schreiben sondern mit einer schleife lösen könnt ihr mir da wohl helfen . LG LordPalme Bearbeitet 3. Mai 2010 von LordPalme Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Hey,... Also wenn ich dich richtig verstanden habe, sollte das dann wohl sowas in der Art sein, oder? for v_zaehler in 1..12 loop //mach dies und das.. (monatszahlen --> entsp. monatsnamen) end loop; Schau auch mal da: SQL: 8.5 Datumsfunktionen Denke monthname(i) könnte für dich intressant sein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 Ja genau sowas habe ich mir gedacht es könnte eventuell nur noch Problem mit den Monatsnamen geben da ich die ja erst in ein Array packen muss und dann den passenden Index ansprechen um die richtige Ausgabe zu bekommen . Oder bin ich da ganz auf dem Holzweg ?? Danke erstmal für deine Hilfe :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 hey.. kannst ja auch mal hier n paar möglichkeiten anschauen... Convert Month Number to Month Name Function in SQL - Stack Overflow ich denke du hast ne tabelle mit na spalte wo sämtliche monatsnr. drin sin, oder? Dann musste da mit keinem array arbeite. Aber wer weiß, vll. bin ich grad aufm Holzweg ..hier wird sicher noch jemand sein, der mehr Plan von SQL hat als ich ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Hi Jungs , Also..find ich schon etwas diskriminierend. Wusste nicht, dass hier keine jungen Fräuleins unterwegs sein dürfen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 Also..find ich schon etwas diskriminierend. Wusste nicht, dass hier keine jungen Fräuleins unterwegs sein dürfen So war das nicht gemeint :-) wohlte nur nicht soviel schreiben . Also wir haben eine aufgebe bekommen wo wir eine Funktion schreiben sollten die die Monatsnamen ausgibt , das habe ich erstmal so umgesetzt : DELIMITER // CREATE FUNCTION monatsname(Monat DATE) RETURNS VARCHAR(15) BEGIN CASE monate(monat) WHEN MONTH(CURDATE()) = 1 THEN RETURN 'Januar'; WHEN MONTH(CURDATE()) = 2 THEN RETURN 'Februar'; WHEN MONTH(CURDATE()) = 3 THEN RETURN 'März'; WHEN MONTH(CURDATE()) = 4 THEN RETURN 'April'; WHEN MONTH(CURDATE()) = 5 THEN RETURN 'Mai'; WHEN MONTH(CURDATE()) = 6 THEN RETURN 'Juni'; WHEN MONTH(CURDATE()) = 7 THEN RETURN 'Juli'; WHEN MONTH(CURDATE()) = 8 THEN RETURN 'August'; WHEN MONTH(CURDATE()) = 9 THEN RETURN 'September'; WHEN MONTH(CURDATE()) = 10 THEN RETURN 'Oktober'; WHEN MONTH(CURDATE()) = 11 THEN RETURN 'November'; WHEN MONTH(CURDATE()) = 12 THEN RETURN 'Dezember'; END CASE; END// DELIMITER ; jetzt habe ich aber 11 Case die eigentlich unnötig sind da mir eine schleife die Schreibarbeit (hoffentlich) ersparen kann . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 WHEN MONTH(CURDATE()) = 1 THEN RETURN 'Januar'; Hmm, dann musste wohl doch die monatsnamen in n array packen und über die zählervariable auf den index zugreifen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 hab ich mir schon gedacht danke jedenfalls für deine Hilfe . LG LordPalme Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Jo, wenn ich dir helfen konnte Gerne doch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Hi Jungs , ich möchte in sql eine Funktion schreiben die mit die monate als name ausgibt LG LordPalme Hallo, Zumindest in Oracle könntest du folgendes machen : SELECT to_char(SYSDATE,'MONTH') FROM dual Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 (bearbeitet) also, es wurde ja schon angesprochen MONTHNAME() würde helfen. kommt aber drauf an was du eigentlich einsetzt, MSSQL, MySQL, ORACLE, ...? MySQL - SELECT monthname('2008-02-03') AS 'Month Name' MSSQL (T-SQL) - SELECT DATENAME(month, '03/02/2008') AS 'Month Name' Orcale steht ja schon da deine Funktion da versteh ich eh nicht, du übergibst ein datum um dann den aktuellen monatsnamen auszugeben?? Bearbeitet 3. Mai 2010 von _n4p_ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 Ja das war die aufgabe von unserm doz muss man nicht verstehen nur machen :-( thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Ja abba er meinte deine Funktion. Net die Aufgabe vom Doz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 (bearbeitet) Ja ich habe in jedem case eine abfrage die ich mir hätte sparen können . So ist es eventuell verständlicher: DELIMITER // CREATE FUNCTION firma.monatsname() RETURNS VARCHAR(10) BEGIN CASE MONTH(NOW()) WHEN 1 THEN RETURN "Januar"; WHEN 2 THEN RETURN "Februar"; WHEN 3 THEN RETURN "März"; WHEN 4 THEN RETURN "April"; WHEN 5 THEN RETURN "Mai"; WHEN 6 THEN RETURN "Juni"; WHEN 7 THEN RETURN "Juli"; WHEN 8 THEN RETURN "August"; WHEN 9 THEN RETURN "September"; WHEN 10 THEN RETURN "Oktober"; WHEN 11 THEN RETURN "November"; WHEN 12 THEN RETURN "Dezember"; END CASE; END// DELIMITER ; Bearbeitet 3. Mai 2010 von LordPalme Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 deine Funktion da versteh ich eh nicht, du übergibst ein datum um dann den aktuellen monatsnamen auszugeben?? Ja, dass wollte doch der OP ? Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Ja, dass wollte doch der OP ? Gruss naja, wenn er eh den monatsnamen zum aktuellen datum will, braucht er seiner funktion doch kein datum übergeben, oder? aber naja, da er ja scheinbar sowieso auf seinem switch konstrukt besteht obwohl man es nachweislich mit einer zeile lösen kann, sollte ich mich über einen unbenutzten funktionsparameter wohl nicht wundern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Momo21 Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Jetzt hab ichs au geblickt. Also du solltest ein Datum eingeben (Tag-Monat-Jahr,.. odda anres Format kein Plan ^^) und dann sollte der MONAT mit seinem MONATsnamen ausgegeben werden. Oki, versteh den Sinn net so recht. Abba die Aufgabestellung habi jetzt geblickt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 3. Mai 2010 Autor Teilen Geschrieben 3. Mai 2010 Der sinn ist das wir lernen Funktionen zu schreiben . Die genaue Aufgabenstellung lautete : Schreiben Sie eine Funktion mit dem Namen "monatsname()". Die Funktion soll den aktuellen Monatsnamen in deutsch zurückliefern. Da ich momentan noch am Anfang bin was Datenbanken angeht kann ich verstehen das die Aufgabenstellung noch sehr simpel ist um erstmal ein Gefühl für die Syntax zu bekommen . LG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 Der sinn ist das wir lernen Funktionen zu schreiben . Die genaue Aufgabenstellung lautete : Schreiben Sie eine Funktion mit dem Namen "monatsname()". Die Funktion soll den aktuellen Monatsnamen in deutsch zurückliefern. Da ich momentan noch am Anfang bin was Datenbanken angeht kann ich verstehen das die Aufgabenstellung noch sehr simpel ist um erstmal ein Gefühl für die Syntax zu bekommen . LG Die DB, welche du verwendest wäre noch hilfreich....Also in Oracle wäre diese Funktion folgendermassen : FUNCTION monatsname RETURN VARCHAR2 is l_sResult VARCHAR2(15); BEGIN SELECT TO_CHAR (SYSDATE, 'MONTH') INTO l_sresult FROM DUAL; RETURN (l_sresult); END; Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 3. Mai 2010 Teilen Geschrieben 3. Mai 2010 in T-SQL und MySQL siehts ähnlich aus, die querys stehen ja auf der vorigen seite. es sei denn es ist verboten vorhandene funktionen des DBMS zu benutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordPalme Geschrieben 4. Mai 2010 Autor Teilen Geschrieben 4. Mai 2010 Ja das ist in MySQL . Vorhandene Funktionen konnten wir zwar benutzen sollten aber eine eigenen schreiben um das zu lernen . Unsere momentaner Schwerpunkt sind Functions und Procedures . Ich danke jedenfalls allen für die tatkräftige Hilfe . LG LordPalme 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.