sql >> Database teknologi >  >> RDS >> PostgreSQL

LibreOffice Calc udfører en PostgreSQL-funktion

Det er muligt at lave noget lignende i LibreOffice Calc, men i stedet for at sætte databaseforbindelsen op med diverse menuer, foregår alt med makrokode.

Følgende fungerede for mig ved at bruge dette MySQL-lagret procedure :

Sub RunStoredProc
    Dim oParms(1) as new com.sun.star.beans.PropertyValue 
    oParms(0).Name = "user" 
    oParms(0).Value = "root" 
    oParms(1).Name = "password" 
    oParms(1).Value = "password" 
    oManager = CreateUnoService("com.sun.star.sdbc.DriverManager")
    sURL = "sdbc:mysql:jdbc:localhost:3306/world"
    oConnection = oManager.getConnectionWithInfo(sURL, oParms())
    sFormat = "Europe"
    oStmt = oConnection.prepareCall("CALL country_hos(?)")
    oStmt.setString(1, sFormat)
    oResult = oStmt.executeQuery()
    sResult = ""
    If Not IsNull(oResult) Then
      While oResult.Next()
        sResult = sResult & oResult.getString(1) & CHR(10)
      Wend
    End If
    MsgBox "Result: " & sFormat & " = " & CHR(10) & sResult
    oStmt.close()
End Sub

Koden er tilpasset fra https://forum.openoffice. org/da/forum/viewtopic.php?f=21&t=41149 .

For at afslutte koden skal du ændre den for at lægge resultaterne i regnearket i stedet for at vise dem i en meddelelsesboks. Læs også den valgte værdi fra rullemenuen i stedet for at indkode værdien af ​​sFormat .

Bemærk:Nogle oplysninger online foreslår brug af en mellemliggende .odb-fil. Det ville involvere flere menuer i stedet for at gøre alt i makroen. Dette virker for tabeller og forespørgsler, men tilsyneladende ikke for lagrede procedurer, medmindre måske med HSQLDB som nævnt her .




  1. Gruppér rækker baseret på kolonnesumværdi

  2. Kopier/dupliker SQL-rækken med blob/tekst, hvordan gør man det?

  3. MySql kombinerer LIMIT og ORDER BY

  4. Hurtigste forespørgsel til at kontrollere, om der findes en række i Oracle?