Announcement

Collapse
No announcement yet.

einfach procedure läuft nicht durch, weiss net warum

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • einfach procedure läuft nicht durch, weiss net warum

    hallo,

    hab folgende prozedure:

    create or replace procedure VW_FAHRTVERLAUF_CREATE (in_Linie number, in_Route number, in_Kursnr number, in_Datum varchar2, in_Zeit_von varchar2, in_Zeit_bis varchar2) is
    begin

    execute immediate
    'create or replace view VW_FAHRTVERLAUF as
    SELECT distinct o.lsanr, o.mpname, m.sgbez, o.datum, o.zeit, o.kursnr,
    TO_NUMBER(SUBSTR(o.mpname,3,2)) NR FROM OEVM2 o, ROUTE r, STATION s, MELDEPUNKT m
    WHERE o.linienr='||in_Linie||' and o.routenr='||in_Route||' and o.linienr=r.linienr and o.routenr =
    r.routenr and r.routeid=s.routeid and r.versid=m.versid and m.knoid=s.knoid
    and m.mpname=o.mpname and m.mpnr=o.mpnr and m.sgbez=s.sgbez and
    o.datum='||in_Datum||' and o.kursnr='||in_Kursnr||' and o.zeit>'||in_Zeit_von||' and o.zeit<'||in_Zeit_bis||'
    order by o.zeit;';

    end;

    wenn ich diese mit dem befehl
    execute VW_FAHRTVERLAUF_CREATE('2','1','5','07.07.2005','0 1:01:00','12:00:00')
    starte
    erscheint die fehlermeldung:
    SQL command not properly ended at VW_FAHRTVERLAUF_CREATE, line5
    (muesste die zeile mit execute immediate sein)

    wenn ich den create view befehl manuell (also ausserhalb der procedure mit den identischen werten starte, so läuft der befehl durch und die view wird erstellt...)

    hilfe, danke
    chirstoph

  • #2
    Hallo,

    warum soll eine View innerhalb der Procedure erzeugt werden?
    Ich kann das im Moment leider nicht testen, aber mir war so, als ob man das gar nicht darf (keine ddl innerhalb einer procedure/function). Außerdem macht das irgendwie nicht so recht Sinn, da Du die View auch ganz normal mit konventionellen Mitteln ohne Gegenwehr erstellen kannst.

    Gruß,

    Ola

    Comment


    • #3
      Hallo Christoph,

      wenn du dein CREATE VIEW mal "von Hand parst", dann kommt folgendes raus:
      SELECT distinct o.lsanr, o.mpname, m.sgbez, o.datum, o.zeit, o.kursnr, TO_NUMBER(SUBSTR(o.mpname,3,2)) NR
      FROM OEVM2 o, ROUTE r, STATION s, MELDEPUNKT m
      WHERE o.linienr=2
      and o.routenr=1
      and o.linienr=r.linienr
      and o.routenr = r.routenr
      and r.routeid=s.routeid
      and r.versid=m.versid
      and m.knoid=s.knoid
      and m.mpname=o.mpname
      and m.mpnr=o.mpnr
      and m.sgbez=s.sgbez
      <b>and o.datum=07.07.2005 </b>
      and o.kursnr=5
      <b>and o.zeit>01:01:00 </b>
      <b>and o.zeit<12:00:00 </b>
      order by o.zeit;

      Da fehlen einfach ein paar ' bei all dem was ein String ist!

      ... o.datum='''||in_Datum||''' and o.kursnr=...

      Gruß Falk

      Edit: Wobei mir wie meinem Vorredner nicht ganz klar ist wozu man solch eine View in einer Procedure erstellen muß ?
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Oh, doch erlaubt. Wie gräßlich

        Comment

        Working...
        X