Function DE Version 5.00

@MySQLFetchColumn

SQL

Syntax

@MySQLFetchColumn(MySQLResultHandle;FNColumnNumber);
@MySQLFetchColumn(MySQLResultHandle;FNColumnNumber;FNVPR);

Beschreibung

Holt Spalte eines gespeicherten Ergebnises einer @MySQLQuery Anfrage.
In FN FNColumnNumber wird die Spaltennummer angegeben.

Wird der optionale Parameter FN FNVPR angegeben, wird das Ergebnis zusätzlich in die Variable zu der VPR zurückgegeben.

Return:
Im Erfolgsfall die abgefragte Spalten-Werte als Liste, andernfalls @Error;

Beispiel: @MySQLFetchColumn(MySQLResultHandle;FNColumnNumber);

/* Beispiel: Einfache MySQL-Abfrage aus der Engine.
Das Skript stellt eine Verbindung zu einer MySQL-Datenbank her,
liest einen Datensatz aus der Tabelle testdb.amount,
übernimmt die Ergebniswerte in Variablen und gibt diese im Log aus. */

/* MySQL-Handle initialisieren. */
MySQLh:=@MySQLInit;

/* Fehlerstatus vorbelegen: 1 bedeutet Fehler bzw. noch keine erfolgreiche Verbindung. */
MySQLError:=1;

/* Prüfen, ob die Initialisierung des MySQL-Handles erfolgreich war. */
IF(@IsError(MySQLh)){
   @LogReport(MySQLh;3);
}ELSE{
   /* MySQL-Optionen setzen bzw. initialisieren. */
   @MySQLOptions(MySQLh);
   
   /* Verbindungsdaten für den MySQL-Server festlegen. */
   MySQLUser:="MySQLConnector";
   MySQLPassword:="ConnectorPassword";
   MySQLDefaultDatabase:="testdb";
   MySQLHost:="172.16.1.215";
   
   /* Verbindung zur MySQL-Datenbank herstellen. */
   Ret:=@MySQLConnect(MySQLh;MySQLHost;MySQLUser;MySQLPassword;MySQLDefaultDatabase);
   
   /* Wenn die Verbindung fehlschlägt, Fehler protokollieren. */
   IF(@IsError(Ret)){
      @LogReport(Ret);
   }ELSE{
      /* Verbindung war erfolgreich; Fehlerstatus zurücksetzen. */
      MySQLError:=0;}
   
   /* Die Abfrage nur ausführen, wenn die Verbindung erfolgreich hergestellt wurde. */
   IF(!MySQLError){
      /* Datensatz mit einem bestimmten Namen aus der MySQL-Tabelle lesen. */
      QueryStr:="SELECT ID,Name,Amount,UID FROM testdb.amount;";
      
      /* Query ausführen und das Ergebnis-Handle in MySQLResH zurückgeben. */
      Ret:=@MySQLQuery(MySQLh;QueryStr;MySQLResH);
      IF(@IsError(Ret)){
         @LogReport(Ret;3);}
      
      /* Anzahl der von der Abfrage zurückgegebenen Zeilen ermitteln. */
      NumRows:=@MySQLGetNumRows(MySQLResH);
      @LogReport("NumRows:"+@Text(NumRows);3);
      
      /* Es gibt ein Ergebnis. */
      IF(NumRows>=1){
         /* Erste Ergebnisspalten lesen und die Spaltenwerte in Variablen übernehmen. */
         ThisQueryIDs:=@MySQLFetchColumn(MySQLResH;1);
         ThisQueryNames:=@MySQLFetchColumn(MySQLResH;2);
         ThisQueryAmounts:=@MySQLFetchColumn(MySQLResH;3);
         ThisQueryUIDs:=@MySQLFetchColumn(MySQLResH;4);

      }ELSE{
         /* Wenn kein Ergebnis gefunden wurde, Standardwerte setzen. */
         ThisQueryIDs:=-1;
         ThisQueryAmounts:=0;
         ThisQueryNames:=ThisQueryUIDs:="";
      }
      
      /* Ergebnis-Handle freigeben. */
      MySQLResH:=@MySQLFreeResult(MySQLResH);
      
      /* Die gelesenen bzw. gesetzten Ergebniswerte ausgeben. */
      @LogReport("ThisQueryIDs :"+@Implode(@Text(ThisQueryIDs);", ");3);
      @LogReport("ThisQueryNames :"+@Implode(ThisQueryNames;", ");3);
      @LogReport("ThisQueryAmounts:"+@Implode(@Text(ThisQueryAmounts);", ");3);
      @LogReport("ThisQueryUIDs :"+@Implode(ThisQueryUIDs;", ");3);
   }
   
   /* MySQL-Verbindung schließen. */
   MySQLh:=@MySQLClose(MySQLh);
}

/* MySQL-Thread-Kontext beenden bzw. aufräumen. */
@MySQLThreadEnd;