DB-Funktionen (PostgreSQL) beim Insert aufrufen

  • Post
    ms5
    Teilnehmer
    Ich möchte für jeden Datensatz, der in eine PostgreSQL-DB eingepflegt wird als Wert einen Zeitstempel (in PostgreSQL: YYYY-MM-DD HH:MM:ss) schreiben. Dafür gibt es die PostgreSQL-DB-Funktion Now(). Wie kann ich diese Funktion aufrufen? Ein Beispiel wäre sinnvoll. Ich habe es schon mit Variablen über <xsl:value-of select=”format-date(current-date(), ‘[Y0001]-[M01]-[D01] ‘)”></xsl:value-of><xsl:value-of select=”format-time(current-time(), ‘[H01]:[m01]:[s01]’)”></xsl:value-of> probiert, scheitere aber an einem Fehler hins. des Format-Attributes.

    Ferner soll beim INSERT die Funktion ST_GeomFromText(‘POINT(<xsl:value-of select=”itdCoord/@x” /><xsl:value-of select=”itdCoord/@y” />)’,25833) mit den ersichtlichen dynamischen Werten aufgerufen werden (25833 ist ein weiterer Parameter, aber hier konstant). Hier fehlt mir ebenfalls ein Beispiel.

    Vielen Dank.

    0
    0
Ansicht von 1 Antwort (von insgesamt 1)
  • Replies
    Holger Rehn
    Administrator
    Problem #1:

    Ich sehe keine Möglichkeit, bei einem Insert anstelle eines fixen Wertes einen Funktionsaufruf einzubinden. Wenn Sie hier die Postgres-Funktion nutzen wollen, könnten Sie aber eine kleine Datenbank-Prozedur schreiben, die die entsprechende Spalte via now() füllt und alle anderen Werte unverändert übernimmt. Diese können Sie dann statt des Inserts entsprechend aufrufen. Die vom Adapter verwendete Syntax für Prozedur- und Funktionsaufrufe finden Sie im Handbuch unter “Aufruf von Prozeduren und Funktionen”.

    Falls Ihnen ein in der Transformation erzeugter Zeitstempel im entsprechenden Format genügt, ginge das hiermit (XSLT 2.0):

    <xsl:value-of select=”format-dateTime( current-dateTime(), ‘[Y0001]-[M01]-[D01] [h01]:[m01]:[s01]’) “/>

    Problem #2:

    Hier gilt im Prinzip das oben Gesagte: Bei Inserts angegebene Werte werden vom Adapter als fixe Werte behandelt, Funktionsaufrufe sind hierüber nicht machbar. Für diesen Fall bleibt also wohl tatsächlich nur der Umweg über eine Datenbank-Prozedur.

    0
    0
Ansicht von 1 Antwort (von insgesamt 1)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.