sql >> Databasteknik >  >> RDS >> PostgreSQL

LibreOffice Calc kör en PostgreSQL-funktion

Det går att göra något liknande i LibreOffice Calc, men istället för att sätta upp databasanslutningen med olika menyer så görs allt med makrokod.

Följande fungerade för mig med detta MySQL lagrad procedur :

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 är anpassad från https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .

För att slutföra koden, ändra den så att resultaten läggs in i kalkylarket istället för att visa dem i en meddelanderuta. Läs också det valda värdet från rullgardinsmenyn istället för att hårdkoda värdet för sFormat .

Obs! Viss information online föreslår att du använder en mellanliggande .odb-fil. Det skulle innebära fler menyer snarare än att göra allt i makrot. Detta fungerar för tabeller och frågor men uppenbarligen inte för lagrade procedurer, om inte kanske med HSQLDB som nämnts här .




  1. Hur använder man osignerade int/long-typer med Entity Framework?

  2. Bästa metoderna för att köra totaler – uppdaterad för SQL Server 2012

  3. Databasreorganiseringar – varför de är viktiga

  4. Fel vid inställning av databaskonfigurationsegenskap för IDatabaseConnection (HSQLDB)