SQL

  • hi
    hab ein problem in SQL
    Und zwar will ich einen report machen und nach jeden fünften eintrag eine leerzeile erstellen.
    Ich weis das es dafür in sql eine funktion gibt, weis aber nicht wie die heisst

    danke,
    michael

  • Hallo Michael,

    in SQL selbst gibt es sowas sicherlich nicht. SQL ist eine reine Schnittstellensprache, mit der man eine SQL-fähige Datenbank steuern kann. Du kannst also beliebig viele Datensätze damit auslesen, aber die Aufbereitung der Daten macht man nicht mit SQL selbst. Arbeitest Du mit PHP, CGI oder ähnlichen oder benutzt Du ein MS Access-Frontend oder sonstiges?

  • ich arbeite mit dem report builder

    es müsste doch möglich sein...

    man kann auch in PL programmieren, aber da kenn ich mich nicht aus

  • Also die Ausgabe mit PL/SQL müsste in etwa so gehen:


    Der Aufruf in einem anonymen Block müsste so aussehen:

    Code
    Declare
    Begin
    test();
    End;

    Vielleicht hilft dir das Beispiel ja PL/SQL zu verstehen. Wenn deine Datenbank das allerdings nicht unterstützt hilft dir das wohl auch nicht weiter. Mit dem Report Builder kenn ich mich auch net aus.

  • naja, sieht nicht schwer aus

    nur zwei fragen:
    was passiert in der ersten zeile
    und was macht die funktion mod() ?

  • Zitat von Michael_SQL

    was passiert in der ersten zeile

    Du legst eine Prozedur mit dem Namen test an. (create)
    Wenn es eine Prozedur mit dem Namen test schon gibt wird sie durch die neue ersetzt. (replace)

    Prozeduren oder Funktionen bieten die Möglichkeit SQL Queries zu benennen und abzuspeichern.

  • bei mir meldet er nähmlich das dass eine funktion sein muss

    Wenn ich funktion hinschreibe kennt er create nicht.

    Lösche ich create und replace weg meldet er das in dieser Zeile ein fehler ist

    i := i+1;

    er kennt den den Bezeichner '|' nicht !?! (welcher bezeichner?)


    Sorry wenn ich so dumme fragen stelle :oops:

  • hmm, naja jetzt lasst es sich zumindest kompilieren

    Aber ich vermute es geht nicht wegen zwei fehlern,
    das erste war das die funktion dpms_out.put_line() nicht gegangen ist. Da hab ich dann dpms_output.put_line() als ersatz genommen

    das zweite ist das ich das alles nicht so auf mache

    Code
    Declare 
    Begin 
    test(); 
    End;

    sondern, ich gebe es in den PL/SQL filter von Report Builder

  • Jo, dbms_output.put_line(); ist auch richtig. Immer diese Flüchtigkeitsfehler. Das zweite mal hat ichs ja richtig geschrieben. Passiert wenn man sich länger nicht mehr mit einer Sache beschäftigt. :oops:

    Da du das create und replace weggelassen hast ist klar das du den anonymen Block nicht mehr brauchst, bzw. das dieser nicht funktioniert.

    Du kannst auch alles in einen anonymen Block schreiben:

    Würd mich wirklich interessieren wenn es funktioniert, bzw. es das ist was du benötigst. ~

  • ok, jetzt ists klar. Ich hab einen anderen compiler
    er meldet immer das Declare nicht geht weil ich eine function brauche :(
    und dbms_output hab ich sogar richtig geschrieben gehabt, trotzdem funktionierts nicht

  • ok, er kennt dbms_output schon, aber er braucht bei Put_line einen paramter

  • könnt ihr mir nochmal in PL helfen?

    ich möchte jetzt nur einen zähler einbauen damit er sofort beim zweiten wert aufhört
    aber ich hab keine ahnung in PL

    ich weis nicht mal wie man das richtig startet

  • Es sollen also 2 Zeilen aus der Tabelle ausgegeben werden, und dann soll er aufhören. Das sollte so machbar sein, falls die Datenbank eine Oracle Datenbank ist:

    Ansonsten beschäftige dich mal mit PL.
    http://www.datenbank-plsql.de/ falls es sich um eine Oracle Datenbank handelt.

  • kennt ihr zufällig ein programm womit man gut mit PL programmieren kann?


    Ich hab nähmlich den Report builder und der ist für so was ziehmlich sch***