karlheinz: mySQL View mit Vairablen

Hi,

ich erzeuge in einer procedure eine view:

  
  
CREATE PROCEDURE foo(x INT)  
BEGIN  
  create view name as select * FROM tabelle where spalte = x;  
END;  

mit einem konstanten wert für x ist das kein problem, wenn ich aber variablen in der view verwende, bekomme ich folgende fehlermeldung:

View's SELECT contains a variable or parameter

sind variablen grundsätzlich in views nicht erlaubt? wenn ja, wäre das aber sehr nachteilig.

gruß
karlheinz

  1. sind variablen grundsätzlich in views nicht erlaubt? wenn ja, wäre das aber sehr nachteilig.

    Es besteht eventuell in MySQL die Möglichkeit einen String (VARCHAR(x)) zusammenzubasteln und diesen dann auszuführen, als ob er ein normales SQL-Statement darstellt.

    1. Es besteht eventuell in MySQL die Möglichkeit einen String (VARCHAR(x)) zusammenzubasteln und diesen dann auszuführen, als ob er ein normales SQL-Statement darstellt.

      und den string dann in die where-klausel setzen? der string wird/muss zwangsläufig in einer variable abgespeichert werden, damit ich den string auch an anderer stelle verwenden kann. oder wie hast du das gemeint? bin nicht ganz schlau aus deiner antwort geworden

      1. Es besteht eventuell in MySQL die Möglichkeit einen String (VARCHAR(x)) zusammenzubasteln und diesen dann auszuführen, als ob er ein normales SQL-Statement darstellt.

        und den string dann in die where-klausel setzen?

        Den String ausführen (@Var='SELECT * FROM DT_1'; EXEC @VAR;), also ggf. inkl. WHERE-Klausel, Moment, wir gehen mal in die Doku, ...

        Ne, sorry, nichts in der Doku gefunden.

        1. Hallo,

          Den String ausführen (@Var='SELECT * FROM DT_1'; EXEC @VAR;), also ggf. inkl. WHERE-Klausel, Moment, wir gehen mal in die Doku, ...

          Ne, sorry, nichts in der Doku gefunden.

          ich habe selbiges Problem. Habe es wie King^Lully mittels execute probiert, "exec" habe ich in der Doku jetzt nicht gefunden...

            
          procedure()  
          begin  
            declare var int;  
            
            PREPARE stmt1 from 'create view blabla... where spalte = var';  
            EXECUTE stmt1;  
          end;  
          
          

          -> ERROR 1351 (HY000): View's SELECT contains a variable or parameter

          ganz schön ärgerlich wenn Variablen innerhalb einer View nicht verwendet werden können...

          1. yo,

            ganz schön ärgerlich wenn Variablen innerhalb einer View nicht verwendet werden können...

            was spricht den dagegen, die view mit einer where klausel aufzurufen also:

            select spalte1, spalte2..
            from view_name
            where spaltex = wert

            Ilja

            1. Hallo,

              was spricht den dagegen, die view mit einer where klausel aufzurufen also:

              select spalte1, spalte2..
              from view_name
              where spaltex = wert

              Ilja

              gar nichts! Problem ist, erzeuge eine View in der eine Where-Klausel vorkommt die Variablen enthält => is nit weil geht nit :)