PostgreSQL
La base de donnes la plus sophistique au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Procédure stockées avec VBA

Technique - odbc | Procédure stockées avec VBA

Par loic911 le 21/03/2007 - 18:39

Bonjour,

J'ai une procédure stockée PL/PGSQL
-------------------------------------------------------------------------------------------------------
CREATE FUNCTION insertInfos(pNom VARCHAR, pWSVG DECIMAL, pHSVG DECIMAL,pSX DECIMAL, pSY DECIMAL, pWD DECIMAL,pHD DECIMAL,pMetier VARCHAR) RETURNS void AS $$
DECLARE
vSite char (3);
vBat char (4);
vEtage CHAR (4);
vId INTEGER;
BEGIN
vSite := SUBSTR(pNom, 0, 3 );
vBat := SUBSTR(pNom, 4, 4 );
vEtage := SUBSTR(pNom, 8 , 4 );
SELECT nextval('seq_id_plan') INTO vId;
--IDPLAN := vId;

INSERT INTO "PLANS"(ID,NOM, WIDTHSVG,HEIGHTSVG,STARTX,STARTY,WIDTHDRAW,HEIGHTDRAW,SITE,BATIMENT,ETAGE,METIER) VALUES (vId,pNom, pWSVG, pHSVG,pSX, pSY, pWD,pHD,vSite,vBat,vEtage,pMetier);
END;
$$ LANGUAGE plpgsql;
-------------------------------------------------------------------------------------------------------

J'essaye de l'appeler depuis un code VBA:
-------------------------------------------------------------------------------------------------------
Public Sub CallPostProceduresInfoGenerale(pNom As String, widthSVG As Double, heightSVG As Double, startX As Double, startY As Double, widthDraw As Double, heightDraw As Double, pMetier As String)

Dim cmd As New ADODB.Command

cmd.ActiveConnection = cnxPost

Dim str As String
str = ""

'SELECT _insertInfos ('tada', 43, 34,65, 34, 33,23,'batiment')

cmd.CommandText = "Select _insertInfos(?,?,?,?,?,?,?,?)"

cmd.Parameters.Append cmd.CreateParameter("pNom", adVarChar, , 50, pNom)
cmd.Parameters.Append cmd.CreateParameter("pWSVG", adInteger, , , Round(widthSVG, 0))
cmd.Parameters.Append cmd.CreateParameter("pHSVG", adInteger, , , Round(heightSVG, 0))
cmd.Parameters.Append cmd.CreateParameter("pSX", adInteger, , , Round(startX, 0))
cmd.Parameters.Append cmd.CreateParameter("pSY", adInteger, , , Round(startY, 0))
cmd.Parameters.Append cmd.CreateParameter("pWD", adInteger, , , Round(widthDraw, 0))
cmd.Parameters.Append cmd.CreateParameter("pHD", adInteger, , , Round(heightDraw, 0))
cmd.Parameters.Append cmd.CreateParameter("pMetier", adVarChar, , 25, pMetier)

cmd.Execute

Set cmd = Nothing
End Sub
-------------------------------------------------------------------------------------------------------

Mais j'obtiens le message d'erreur suivant:

"ERROR: function _insertinfos(name,integer,integer,integer,integer,integer,integer,name
LIGNE 1: Select _insertInfos($1,$2,$3,$4,$5,$6,$7,$8)
(une flèche "^" indique le premier e de select)
ASTUCE: No function matches the given name and argument types. You may need to add explicit type casts."

Je trouve aucun exemple d'appel de procédure PL/PGSQL depuis du code VBA!

Helpppp! ;o)

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonjour, Dans ta requête,

ioguix/ = 21 Mars, 2007 - 19:47

Bonjour,

Dans ta requête, tu fais un SELECT _insertInfos(...) alors que tu as créé une fonction insertInfos, ton appel devrait donc être
SELECT insertInfos(...);

++
--
`IoGuiX`


Je l'avais rennomé en "_inse

loic911/ = 22 Mars, 2007 - 13:13

Je l'avais rennomé en "_insertInfos" après avoir executer le script.
L'erreur ne vient donc pas de la :s


Relisez bien l'erreur...

SAS/ = 22 Mars, 2007 - 13:18

"ERROR: function _insertinfos(name,integer,integer,integer,integer,integer,integer,name

La fonction a été créée avec des majuscules, il semblerait. Pour que cela fonctionne, il faut donc exécuter :

SELECT "_insertInfos"...

Librement,
Stéphane Schildknecht
dalibo
PostgreSQLFr


Je m'étais aussi fais la ref

ioguix/ = 23 Mars, 2007 - 12:06

Je m'étais aussi fais la reflexion,

Mais la fonction n'a pas été créée entre guillemet (d'après le code donné). Du coup, PostgreSQL devrait la stocker en minuscule.

Cependant, la solution de SAS est toujours trés probable car la fonction a été renommée.
Il est possible qu'elle ait été renommée en prenant en compte la casse en fonction de la requête que vous avez effectué...

Voilà un complément de piste...

--
Guillaume de Rorthais


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.