sql >> Base de Datos >  >> RDS >> PostgreSQL

LibreOffice Calc ejecuta una función de PostgreSQL

Es posible hacer algo similar en LibreOffice Calc, pero en lugar de configurar la conexión de la base de datos con varios menús, todo se hace con código macro.

Lo siguiente funcionó para mí usando esto Procedimiento almacenado de MySQL :

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

El código está adaptado de https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .

Para finalizar el código, modifíquelo para colocar los resultados en la hoja de cálculo en lugar de mostrarlos en un cuadro de mensaje. Lea también el valor seleccionado del cuadro desplegable en lugar de codificar el valor de sFormat .

Nota:Cierta información en línea sugiere usar un archivo .odb intermedio. Eso implicaría más menús en lugar de hacer todo en la macro. Esto funciona para tablas y consultas, pero aparentemente no para procedimientos almacenados, a menos que quizás con HSQLDB como se menciona aquí .