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 .