Ankündigung

Einklappen
Keine Ankündigung bisher.

ODBC MSSQL Abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ODBC MSSQL Abfrage

    Hallo zusammen,

    ich möchte eine MSSQL Datenbank per ODBC von einem externen WIN Server abfragen.
    Die Verbindung wird aufgebaut. Jedoch musste ich feststellen, das meine Befehlsangaben, welche lokal bei MySQL Datenbanken funktionieren teilweise nicht bei Abfragen von dem MSSQL Server funktionieren

    Beispiel:
    PHP-Code:
    $Number 581436;

    $sqlMS $ConMS -> prepare("select NO_REP from $Tabelle where NO_REP = :Number");
    $sqlMS -> bindParam(':Number'$Number);
    $sqlMS -> execute();

    $HabeMS $sqlMS -> rowCount();

    echo 
    "HabeMS = ".$HabeMS."<br/>";

    foreach(
    $sqlMS as $rowMS) {
            echo 
    "R: ".htmlspecialchars($rowMS['NO_REP'])."<br/>";

    In diesem Beispiel sollten 6 Datensätze gefunden werden.
    Diese werden auch gefunden und durch die Schleife angezeigt.

    Nun das Problem:

    1. Das Ergebnis der oberen Abfrage gibt HabeMS = -1

    2.
    PHP-Code:
    $sqlMS $ConMS -> prepare("select NO_REP from $TabExt01 where NO_REP = :Number limit 4"); 
    Des Weiteren, wenn ich limit verwenden möchte, wird der limit - Befehl nicht verarbeitet und es werden keine Datensätze ausgegeben.

    Nun die Frage:
    Müssen hier, da es sich um eine MSSQL Abfrage per ODBC handelt andere Befehle bzw. Befehlsparameter verwendet werden?

    Gruß
    Falke07

  • #2
    Zitat von Falke07 Beitrag anzeigen
    1. Das Ergebnis der oberen Abfrage gibt HabeMS = -1

    2. […] Des Weiteren, wenn ich limit verwenden möchte, wird der limit - Befehl nicht verarbeitet und es werden keine Datensätze ausgegeben.
    MSSQL kennt meines Wissens keine LIMIT und im ersten Fall würde ich mal auf einen Fehlerfall tippen.

    Kommentar


    • #3
      Statt Limit verwende OFFSET und FETCH.
      http://www.sqlservertutorial.net/sql...-offset-fetch/

      Kommentar


      • #4
        Hallo,
        so, habe gelesen und bin eine großen Schritt im Gesamten weiter. Jedoch funktioniert bei mir die OFFSET FETCH Angabe nicht.

        Funktioniert:
        PHP-Code:
        $query "select ORDER_NO_REP from $TabExt01 where ORDER_NO_REP = '581436'";
        $result odbc_exec($connect$query);
        while(
        $row odbc_fetch_array($result)){

                echo 
        "R: ".htmlspecialchars($row['ORDER_NO_REP'])."<br/>";
        }
        odbc_close($connect); 
        Wenn ich jedoch die query durch
        PHP-Code:
        $query "select ORDER_NO_REP from $TabExt01 where ORDER_NO_REP = '581436' OFFSET 1 ROWS FETCH FIND 2 ROWS"
        ersetze bekomme ich kein Ergebnis und die Fehlermeldung: Incorrect syntax near 'OFFSET'., SQL state 37000. Leider finde ich den Fehler aber nicht. Auch mit OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLY funktioniert es nicht.

        Wenn ich das richtig verstehe, gibt offset an, ab welcher Zeile die Suche begonnen werden soll (hier ab der Zeile 1) und fetch next wieviele Zeilen ab hier. (hier 2 Zeilen)

        Kleine Info:
        Ich frage eine Tabelle mit ca. 40.000 Datensätzen ab. 6 erfüllen die where- Bedingung, welche mir auch im funktionierenden Teil ausgegeben werden.

        Ich habe jetzt bestimmt viele Varianten versucht, jedoch immer ohne Ergebnis.

        Hat jemand eine Idee?

        Gruß
        Falke07

        Kommentar


        • #5
          Das ist keine eigenständige Klausel sondern gehört zu ORDER BY. Du musst also ein ORDER BY mit angeben. Alternativ kannst du mit MSSQL auch TOP nehmen, wenn du kein offset brauchst.

          Code:
          SELECT TOP 2 ... FROM ...

          Kommentar


          • #6
            Ha, das war das, was ich gesucht habe.

            Thx an alle und wieder viel dazu gelernt.

            SL
            Falke07

            Kommentar

            Lädt...
            X