Variablen im SELECT Befehl



  • Hallo alle zusammen, ich bins wieder 😃

    hab mal ne frage zu der SELECT Anweisung.

    Und zwar, kann man im SELECT Befehl auch Variablen eintragen ??

    Sprich,

    SELECT * FROM beispieltable WHERE PosZ > 250
    

    Also ich wollte gern die 250 da weg haben und anstatt dessen dort eine Variable einsetzten, so das nicht immer nach 250 geguckt wird und der Wert auch mal Vareieren kann.

    THX schon ma in Voraus

    Slawo



  • Hallo,
    MsSQL unterstützt in StoredProcedures folgendes:

    DECLARE @myInt INT
    SELECT @myInt = 250

    SELECT * FROM beispieltable WHERE PosZ > @myInt



  • @ personenkult

    thx erstma für den Tipp.

    Hättest du unter umständen noch ahnung wie und wo ich diesen DECLARE Befehl einbinden muß, weil ich hab da sowas in meinem Quell-Code:

    dboffen = cdb.Open(CRecordset::forwardOnly,_T( "SELECT * FROM beispieltable WHERE PosX > 250 && PosX < 16000 " ));
    

    aber DECLARE und SELECT und so ,kann ich ja nicht einfach so im QC benutzen, weil wegen, das kennt er nicht und meckert, also der Kompiler.

    und die Zeile da oben ist irgendwie die einzige Zeile, wo ich SQL Statements reinschreiben kann.

    Wüsstest du da evtl. noch was in die Richtung , oder jmd. anders vielleicht noch ??
    Vielleicht muß ich ja noch etwas includieren oder so ??

    big thx im voraus schon mal an alle

    Slawo



  • Hallo,

    in deinem Fall kannst du doch einfach eine Konstante in deiner Klasse deklarieren und die dann mit den den SQL String einbauen.

    dboffen = cdb.Open(CRecordset::forwardOnly,_T( "SELECT * FROM beispieltable WHERE PosX > " + KONSTANTE + "&& PosX < 16000 " ));
    

    Gruß



  • @ personenkult

    BIG THX erstma an dich,

    leider funzt das mit den Konstanten auch nicht richtig bzw. garnicht. Egal ob ich die Konstante so:

    "x1"
    

    oder so

    "+x1+"
    

    oder so

    (x1)
    

    oder so

    ("x1")
    

    in das SELECT Statement einbinde.

    Wobei nur bei der möglichkeit: (x1) wird überhaupt erkannt das es eine Konstate sein soll ,wobei da auch lauter fehler beim Kopilieren produziert werden.

    Weiss mittlerweile überhaupt nicht mehr weiter. Es muss doch möglich sein eine Variable in ein SELECT Statement einzubinden.

    Falls das Hilft, ich programmiere mit Visual Studio 2003 .NET in MFC. Benutze also die CRecordset Klassen.

    Gruß

    Slawo



  • wie wärs, wenn du dich erstmal mit deiner programmiersprache auseinandersetzt?

    std::string konstante = "25";
    db.Open(std::string("blub") + konstante);
    

    wäre zum beispiel eine möglichkeit, über die man nachdenken könnte.

    Tipp 2: "funzt nicht" ist die beste fehlerbeschreibung, die man bringen kann. auch wenns in dem fall klar war, was nicht funzt (zeichenketten werden in c++ bei der kompilierung zu const char*), nimm dir das das nächste mal zu herzen.



  • Wenn es eine Konstante ist kannst du sie ja direkt eintragen. Soll es eine Variable sein gibt es bei MySQL doch hoffentlich auch die Möglichkeit von Prepared Statements 😮

    MfG SideWinder



  • THX an alle die sich gedanken gemacht haben.

    Es funktioniert jetzt.

    und zwar so:

    dboffen = cdb.Open(CRecordset::forwardOnly,_T( "SELECT * FROM beispieltable WHERE PosX >") + Variable_1 + (" AND PosX <")+ Variable_2);
    

    wobei bei die beiden Variablen vom Typ CString sein müssen.

    @ Tipp:

    Danke erstma für den endscheidenden TIPP. Aber solche Kommentare wie:

    tipp schrieb:

    wie wärs, wenn du dich erstmal mit deiner programmiersprache auseinandersetzt?

    kannste dir sparren. 😉

    Wenn ich alles wüsste, würde ich nicht in deisem Forum angemeldet sein und Fragen stellen.
    Zudem bin ich gerade mitten drin mich damit auseinander zu setzten, was aber nicht DEIN Problem sein sollte, wie und wann ich mich mit irgendetwas auseinandersetzte !!!

    in dem Sinne

    VIELEN DANK noch ma an alle, die mir hier Hilfestellung gegeben haben.

    Gruß

    Slawo


Anmelden zum Antworten