PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

LibreOffice Calc executa uma função do PostgreSQL


É possível fazer algo semelhante no LibreOffice Calc, mas em vez de configurar a conexão do banco de dados com vários menus, tudo é feito com código de macro.

O seguinte funcionou para mim usando este Procedimento armazenado do 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

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

Para finalizar o código, modifique-o para colocar os resultados na planilha em vez de exibi-los em uma caixa de mensagem. Leia também o valor selecionado na caixa suspensa em vez de codificar o valor de sFormat .

Observação:algumas informações online sugerem o uso de um arquivo .odb intermediário. Isso envolveria mais menus em vez de fazer tudo na macro. Isso funciona para tabelas e consultas, mas aparentemente não para procedimentos armazenados, a menos que talvez com HSQLDB como mencionado aqui .