Skip to main content
Skip table of contents

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.
Wird als Parametergruppenname '_' übergeben, wird ein interner Buffer für binäre Daten verwendet. In diesem Fall muss sich der Update-Befehl auf genau 1 Spalte beziehen.

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.
Dieser Parameter ist optional. In diesem Fall werden leere Zeichenketten ignoriert.
Für Leer=0 oder Leer=1 gilt: Hat ein Parameter der Parametergruppe den Zustand LEER, wird er ignoriert.

Leer=2: Hat ein Parameter den Zustand LEER, wird '' geschrieben, wenn die zugehörige Datenbankspalte vom Typ varchar oder ähnliches ist.
Leer=3: Hat ein Parameter den Zustand LEER oder UNDEF, 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 )
SQLW = 'AnschriftID = ' + f$SQLNumValue( Anschriften[Nr].AnschriftID )

Status = f$SQLUpdate ( Kanal, 'T_Anschrift','Anschriftliste[Nr]',SQLW)

Status = f$SQLDisconnect( Kanal )

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.