f$SQLUpdate
f$SQLUpdate
Mit dieser Funktion wird ein Datensatz in einer Datenbanktabelle geändert. Alle belegten Parameter der übergebenen Parametergruppe, deren Namen mit einem Spaltennamen der Tabelle korrespondieren, werden in den Update-Befehl aufgenommen. Für das Einfügen der Werte wird die Beschreibung der Tabelle ermittelt und die Datentypen werden angepasst. Lediglich binäre Datentypen können nicht verarbeitet werden. Parameter, deren Wert UNDEF ist, werden in der Datenbank gelöscht. Parameter, die LEER sind, werden nicht verarbeitet. Mit dem optionalen Parameter LeerUndef kann die Behandlung von Parametern im Zustand LEER oder UNDEF gesteuert werden. Die Behandlung leerer (’’) Zeichenkette wird mittels des Übergabeparameters Leerstrings gesteuert. Dieser Parameter steuert, ob leere Zeichenketten (’’) dafür sorgen, dass das zugehörige Datenbankfeld auf NULL gesetzt wird. (Leer = 1). Wird Leer=0 übergeben, werden Leere Zeichenketten ignoriert. Falls die WHERE Bedingung mehrere Datensätze selektiert (f$SQLPG_to_String), werden alle betroffenen Datensätze geändert. Mit der Funktion: f$SQLRowCount (f$SQLRowCount) kann die Anzahl der betroffenen Datensätze ermittelt werden.
Anmerkung: Da das Aufbauen einer Verbindung etwas Zeit benötigt, sollte nicht für jede SQL-Funktion eine neue Verbindung hergestellt werden.
Syntax: | Status = f$SQLUpdate(Kanal,Tabelle,PGName,Where[,Leerstrings][,LeerUndef]) | ||
| Argument | Typ | Bedeutung |
| Kanal | Ganzzahl | Kanalnummer der SQL-Verbindung |
| Tabelle | Zeichenkette | Name der Tabelle, in der der Datensatz geändert werden soll. |
| PGName | Zeichenkette | Der Name der Parametergruppe, deren Werte verarbeitet werden sollen. Die Parametergruppe muss entweder nicht indiziert sein, oder es muss der Index mit angegeben werden. Funktionen, die den internen Buffer verwenden: f$BDateilesen, f$Bdateischeiben, f$SQLUpdate, f$SQLBindColumn |
| Where | Zeichenkette | Die Selektionskriterien zur Ausführung des UPDATE Befehls. Das Keywort WHERE darf nicht enthalten sein. |
| Leerstrings | Ganzzahl | Dieser Parameter steuert, ob leere Zeichenketten ('') dafür sorgen, dass das zugehörige Datenbankfeld auf NULL gesetzt wird. (Leer = 1). Wird Leer=0 übergeben, werden Leere Zeichenketten ignoriert. Leer=2: Hat ein Parameter den Zustand LEER, wird '' geschrieben, wenn die zugehörige Datenbankspalte vom Typ varchar oder ähnliches ist. |
| LeerUndef | Ganzzahl | Dieser Parameter steuert, wie Parameter im Zustand LEER oder UNDEF verarbeitet werden. Für LeerUndef = 0 werden LEERe Parameter ignoriert und für UNDEF Parameter wird das zugehörige Datenbankfeld auf NULL gesetzt. Für LeerUndef = 1 werden UNDEF Parameter ignoriert und für LEERe Parameter wird das zugehörige Datenbankfeld auf NULL gesetzt. Da beim Editieren in einem Dialog beim Löschen eines Felds der Parameter auf LEER gesetzt wird, ist LEERUndef=1 die richtige Einstellung, da das zugehörige Datenbankfeld ebenfalls gelöscht wird. Dieser Parameter ist optional. Wenn er nicht angegeben ist, wird der Wert 0 als Default angenommen. |
Ergebnis: | Ganzzahl | Fehlerstatus: 0 :Befehl wurde korrekt abgesetzt 1:Tabellenname ist leer 2:Die Parametergruppe existiert nicht 3:Die Parametergruppe ist leer, oder die Parameter stimmen nicht mit den Spalten der Tabelle überein (abhängig von den ODBC-Einstellungen muss die Groß-/Kleinschreibung beachtet werden. Bei ORACLE muss SMP_NG.ODBC_DBTYP auf den Wert 2 gesetzt werden). 4:Die Where Bedingung ist leer 5:Es wurde kein Datensatz mit dieser Where Bedingung gefunden -9999: Der SQL-Befehl war nicht erfolgreich. In diesem Fall kann mit Hilfe der Funktion: f$SQLFehler (f$SQLFehler)der Fehlerstatus und die Fehlerbeschreibung ermittelt werden. | |
|
|
| |
Beispiel: | Kanal = f$SQLConnect( db, user, password ) Status = f$SQLUpdate ( Kanal, 'T_Anschrift','Anschriftliste[Nr]',SQLW) Status = f$SQLDisconnect( Kanal ) | ||