IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

VBA et OLEDB => Execution de procs stockées


Sujet :

PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 37
    Points
    37
    Par défaut VBA et OLEDB => Execution de procs stockées
    Bonjour,
    J'ai commencé a développer une application en VBA sous Autocad.
    Des fonctions appellent des procédures stockées Oracle (PL/SQL).
    Ca fonctionne sans problème.

    Mais j'aimerais adapter la solution sous PostgreSQL. J'ai commencé a essayé de me connecter à une base de données Postgres et a écrire des procédures très simples en PL/PGSQL.

    Création de la connection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Sub CreerConnectionPostgres()
    ...
    ChaineConn = "user id=postgres;password=zsefjkzhlfk;Provider=PostgreSQL OLE DB Provider;Data source=127.0.0.1"
     
    cnxPost = ChaineConn
    cnxPost.Open
     
    End Sub
    Appel d'une procedure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Private Sub callPostgresProceduresCercle()
    ...
    Dim Cmd As New ADODB.Command
     
    CreerConnectionPostgres
    Cmd.ActiveConnection = cnxPost
    Cmd.CommandType = adCmdStoredProc
     
    Cmd.CommandText = "insertionCercle"
    Cmd.Parameters.Append Cmd.CreateParameter("nomtest", adVarChar, adParamInput, 20, "Cercle")
     
    MsgBox "Avant erreur"
     
    Cmd.Execute
     
    MsgBox "Après erreur"
     
    Set Cmd = Nothing
    cnxOra.Close
    End Sub

    Script Procedure PL/PGSQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE OR REPLACE FUNCTION "public"."insertioncercle"(nomtest varchar)
      RETURNS void AS 
    $BODY$DECLARE
    mavar integer DEFAULT 45;
    BEGIN
     
    EXECUTE 'INSERT INTO gTest(id,nom) VALUES (' || mavar || ',''' || nomTest|| ''')';
     
    END;$BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION "public"."insertioncercle"(nomtest varchar) OWNER TO "postgres";
    COMMENT ON FUNCTION "public"."insertioncercle"(nomtest varchar) IS '';

    J'obtiens l'erreur "Procedure name for automatic arguments is not unique"
    Je comprends pas trop le problème. J'ai aucune autres fonctions qui s'applle comme ca avec des paramètres différents.

    Il y a t'il un moyen simple de tester la fonction directement sous PostgreSQL (pgadmin III ou Navicat). J'ai essayé avec des
    -EXECUTE PROCEDURE insertioncercle('hello')
    -EXECUTE PROCEDURE insertioncercle("hello")
    -EXECUTE PROCEDURE insertioncercle 'hello'
    ...

    Mais j'ai a chaque fois l'erreur "Syntax error at or near "insertioncercle" au caractère 19"

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    je ne sais pas si ca peut aider , en java je precede comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CallableStatement stmt = connex.prepareCall("{" + str + "}");
    stmt.execute();
    avec des {}, tu peux toujours essayer

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Maintenant avec les "{", j'ai
    "parameterized calls of stored procedures is not implemented"



    Ok c'est résolu il fallait procéder avec un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT maproc("hello!",10)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Executer un proc stock SQL Server depuis Oracle
    Par ATMorphine dans le forum PL/SQL
    Réponses: 1
    Dernier message: 17/05/2011, 11h05
  2. Réponses: 0
    Dernier message: 01/02/2008, 17h52
  3. [MSADO]Execution de proc stockées
    Par xc78370 dans le forum MFC
    Réponses: 2
    Dernier message: 11/05/2006, 10h36
  4. Réponses: 2
    Dernier message: 29/03/2006, 09h38
  5. executer ma Proc. Stockée via jbuilder
    Par LeNeutrino dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2006, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo