PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

LibreOffice Calc exécute une fonction PostgreSQL

Il est possible de faire quelque chose de similaire dans LibreOffice Calc, mais au lieu de configurer la connexion à la base de données avec différents menus, tout est fait avec du code macro.

Ce qui suit a fonctionné pour moi en utilisant ce Procédure stockée 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

Le code est adapté de https://forum.openoffice. org/fr/forum/viewtopic.php?f=21&t=41149 .

Pour terminer le code, modifiez-le pour mettre les résultats dans la feuille de calcul au lieu de les afficher dans une boîte de message. Lisez également la valeur sélectionnée dans la liste déroulante au lieu de coder en dur la valeur de sFormat .

Remarque :certaines informations en ligne suggèrent d'utiliser un fichier .odb intermédiaire. Cela impliquerait plus de menus plutôt que de tout faire dans la macro. Cela fonctionne pour les tables et les requêtes mais apparemment pas pour les procédures stockées, sauf peut-être avec HSQLDB comme mentionné ici .