Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Problem in View mit lokaler Variable

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von LetziTetzi, 10 Januar 2013.

  1. LetziTetzi

    LetziTetzi Benutzer

    Hallo liebe Forumsmitglieder,

    ich bin ein Neueinsteiger auf diesem Gebiet und verstehe nicht, wieso folgender View nicht funktioniert.

    Ich habe schon getestet, woran es liegt und es stellte sich heraus, dass gesamtkapa im View nicht akzeptiert wird. Sobald ich dort direkt eine Zahl eingebe, geht es, er hat anscheind Probleme die Zahl in gesamtkapa zu benutzen.. ? Kann das sein, oder liegt das Problem ganz wo anders, wer kann mir helfen?

    Ich bedanke mich jetzt schon recht herzlich für jegliche Kommentare :)
     

    Anhänge:

  2. akretschmer

    akretschmer Datenbank-Guru


    Gibt es denn eine exakte Fehlermeldung, oder lautet diese tatsächlich: "folgender View nicht funktioniert"?

    Andreas
     
  3. LetziTetzi

    LetziTetzi Benutzer

    Meldung ist:

    ERROR 1351: View's SELECT contains a variable or parameter


    und ich habe gerade eine Antwort gefunden, dass in Views nicht auf lokale Variablen zugegriffen werden kann.. http://bugs.mysql.com/bug.php?id=26140

    Wie kann ich das jetzt umgehen? (Prepared Statements habe ich gefunden, ist das machbar für eine Anfängerin ;) ? )
     
  4. akretschmer

    akretschmer Datenbank-Guru


    Ahhh ja, klar.

    Hmm, wie umgehen? Ich würde eine SRF schreiben, Set Returning Function. Aber ich weiß nicht nicht, ob MySQL das kann. Jedenfalls wird es wohl schwer werden, eine VIEW zu definieren, die man zum Zeitpunkt der Definition nicht definieren kann...

    Andreas
     
  5. LetziTetzi

    LetziTetzi Benutzer

    Habe jetzt mal etwas mit Prepared Statements gemacht..
    Es lässt sich die Prozedur zwar fehlerfrei erstellen, was vorher nicht möglich war, aber spätestens bei der Ausführung kommt der selbe Fehler wieder..

    Kann man es anders umgehen, dass ich eine Tabelle erstellen lasse, statt einen view? Dann aber mit einer Schleife oder?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Was liefern denn einklich Deine beiden SELECTs, wenn Du diese so ausführst?

    Kommt da mehr als eine Zeile bei raus?
     
  7. Tommi

    Tommi Datenbank-Guru

    Hi,

    ich habe mir die Syntax deiner SQL Anweisung einmal angeschaut. Ich bin kein MySQL-User, aber du erstellst hier eine Prozedur, in der du dann eine View erstellst.
    Das kann nur zu Problemen und insbesondere zu keinem Abfrageergebnis bei Ausführung kommen.

    Lass erst mal das "CREATE VIEW Platzvorschläge AS" in deiner Anweisung weg.
    Als nächstes solltest du in der vorhergehenden Abfrage der Kapazität die INTO-Anweisung wie folgt aufbauen:
    Code:
    SELECT material.kapazität*einlagerungsauftrag.menge INTO gesamtkapa
    FROM ...
    
    Dann müßte auch die SELECT-Anweisung korrekt funktionieren

    Zum Testen solltest du die Variable "auftragnr" einfach mal lokal deklarieren und hier einen möglichen Wert zuweisen, ohne gleich eine Prozedur-Erstellung/-Änderung durchzuführen


    Viele Grüße,
    Tommi
     
  8. LetziTetzi

    LetziTetzi Benutzer


    Die 1. Abfrage berechnet die Kapazität der Einlagerungsmenge.
    Die 2. Abfrage soll alle vorhandenen Plätze ausgeben, deren Kapazität entweder gleich groß oder größer der oben geforderten Kapazität ist.
    Dies soll angezeigt werden (ich werde es mal mit in eine Tabelle schreiben versuchen), damit sich der Anwender einen Platz hieraus aussuchen kann.
     
  9. LetziTetzi

    LetziTetzi Benutzer


    Danke für die Hinweise, aber getestet habe ich es schon, es funktioniert alles außer das Problem im View mit der lokalen Variable gesamtkapa..


    Danke für alle Hilfen! Ich werde versuchen, mir eine Tabelle zu erstellen und die Werte eintragen zu lassen, anders gehts nicht.
     
  10. LetziTetzi

    LetziTetzi Benutzer

    Habe es ziemlich einfach gelöst ;)
    Danke nochmal!

    Nun hänge ich an einem sehr viel schwierigeren Thema
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden