Skip to main content
Skip table of contents

f$SQLInsert


f$SQLInsert

Mit dieser Funktion wird ein oder mehrere Datensatz / Datensätze in eine Datenbanktabelle eingefügt. Alle belegten Parameter der übergebenen Parametergruppe, deren Namen mit einem Spaltennamen der Tabelle korrespondieren, werden in den Insert 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. Auf Wunsch wird der Datensatz nach dem Einfügen wieder gelesen, um in der Parametergruppe diejenigen Parameter zu füllen, die durch Default-Werte der Datenbank oder durch Datenbanktrigger gefüllt wurden.

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$SQLInsert(Kanal,Tabelle,PGName,Read[,Anzahl,Feldliste])

 

Argument

Typ

Bedeutung

 

Kanal

Ganzzahl

Kanalnummer der SQL-Verbindung

 

Tabelle

Zeichenkette

Name der Tabelle, in die der Datensatz eingefügt werden soll.

 

PGName

Zeichenkette

Der Name der Parametergruppe, deren Werte eingefügt werden sollen. Falls nur ein Datensatz angelegt werden soll, muss die Parametergruppe entweder nicht indiziert sein, oder es muss der Index mit angegeben werden.

 

Read

Ganzzahl

Wert: 1 Der Datensatz wird nach dem Speichern gelesen und auf die Parametergruppe geschrieben.

Optional

Anzahl

Ganzzahl

Anzahl der Datensätze, die eingefügt werden sollen. Wenn eine indizierte Parametergruppe verwendet wird, können mit diesem Befehl mehrere Datensätze angelegt werden.

Optional

Feldliste

Zeichenkette

Mit Komma getrennte Spaltennamen der Tabelle, die zum Lesen der Datensätze nach dem Einfügen verwendet werden. Wird keine Feldliste angegeben, wird mit allen Spalten gesucht, die beim Einfügen mit einem Wert belegt waren. Wird eine Feldliste angegeben, werden lediglich diese Spalten zur Suche verwendet. Je nach Datenbank und Format der Felder kann es sein, dass das Lesen den Datensatz nicht findet, wenn alle Spalten für die Suche verwendet werden.
Beispiel: Spalte vom Typ bit. Einfügen mit dem Wert:-1. SQL-Server konvertiert beim Einfügen den Wert auf 1. Die Suche mit dem Wert –1 liefert jedoch kein Ergebnis.

Optional

Option

Ganzzahl

Mit dieser Option kann gesteuert werden, wie beim Anlegen neuer Datensätze mit Parametern im Zustand LEER oder UNDEF behandelt werden sollen:
0 – Parameter im Zustand LEER oder UNDEF, sowie Leerstrings werden ignoriert

1 – Leerstrings werden als '' geschrieben
2 - Parameter im Zustand LEER werden als '' geschrieben, wenn die Datenbankspalte vom Typ varchar oder ähnliches ist
3 - Parameter im Zustand LEER oder UNDEF werden als '' geschrieben, wenn die Datenbankspalte vom Typ varchar oder ähnliches ist

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).

-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.

-9998:Der Datensatz wurde erfolgreich angelegt, konnte aber nicht gelesen werden. Möglicherweise ist der Datensatz beim Einfügen durch einen Datenbank-trigger geändert worden.

Beispiel:

Kanal = f$SQLConnect( db, user, password )
Status = f$SQLInsert ( Kanal, 'TM_Dokument','Dokumente[Nr]',1)

Status = f$SQLDisconnect( Kanal )

Oder

Kanal = f$SQLConnect( db, user, password )
Status = f$SQLInsert ( Kanal, 'TM_Dokument','Dokumente',1,Anz_Dok,'ObjektID,ObjektArt,DokumentNr')

Status = f$SQLDisconnect( Kanal )

Anmerkung: Falls die Funktion f$SQLInsert feststellt, dass in der Tabelle, in die der Datensatz eingefügt wird, eine Spalte existiert, die von der Datenbank mit einem Autowert gefüllt wird, wird beim Lesen der Datensätze nach dieser Spalte absteigend sortiert. Falls das Lesen der Datensätze mehrere Ergebnisse liefert, wird auf diese Art der neueste Datensatz ermittelt. Die Funktion kann dies bei den Datenbanksystemen Microsoft SQLServer und MySQL erkennen, nicht jedoch bei ORACLE.

JavaScript errors detected

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

If this problem persists, please contact our support.