Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2004, 14h51   #1
Invité de passage
 
Inscription : octobre 2004
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 3
Points : 0
Points : 0
Par défaut Des procédures stockées pour optimiser les tps de réponses

Bonjour,

Je voudrais remplacer les requêtes PostGreSQL d'un script PHP par des appels directs à des procédures stockées (de façon à optimiser les temps de réponses).

Jusqu'ici rien de bien extraordinaire...dans le monde des bases de données.

...Seulement, débutant en PostGreSQL, je me perds dans la doc sans réussir à créer une procédure stockée retournant plusieurs enregistrements...(tout comme ma requête SELECT dans le script PHP).

Est-ce si difficile ? Dois-je créer obligatoirement un nouveau type (comme j'ai cru le comprendre, ce qui signifie créer deux fonctions supplémentaires) ?

Merci pour votre aide

Ghislain
Sillaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 15h25   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,
Citation:
Est-ce si difficile ?
Non
Citation:
Dois-je créer obligatoirement un nouveau type (comme j'ai cru le comprendre, ce qui signifie créer deux fonctions supplémentaires) ?
Non
La doc PostgreSQL est peu pratique pour comprendre comment créer des procédures stockées (ou Set Returning Functions dans le jargon Postgres). Je te conseille donc le lien suivant :
http://techdocs.postgresql.org/guide...rningFunctions
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 16h03   #3
Invité de passage
 
Inscription : octobre 2004
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 3
Points : 0
Points : 0
Merci beaucoup....Il y a effectivement sur cette page pas mal de choses intéressantes.

MAIS

Etant donné que je ne retourne pas tous les champs d'une table (et même seulement quelques champs de deux tables différentes), je dois créer un type (comme intdiqué sur cette page).

SEULEMENT

la synthaxe utlilisée :
Code :
1
2
 
CREATE type navigation AS (NavId integer, NavParent integer, NavIcon integer, NavLevel smallint, NavNbDoc integer,NavTitle text);
donne ça :
Code :
1
2
 
ERROR:  parser: parse error at OR near "as"
Autre détail pas très évident pour moi, lorsque je cherche la syntaxe de cette fonction sur le net dans la doc officielle de PostGreSQL, je trouve ceci:

Code :
1
2
3
4
5
6
7
8
9
10
 
CREATE TYPE typename ( INPUT = input_function, OUTPUT = output_function
      , INTERNALLENGTH = { internallength | VARIABLE }
    [ , EXTERNALLENGTH = { externallength | VARIABLE } ]
    [ , DEFAULT = "default" ]
    [ , ELEMENT = element ] [ , DELIMITER = delimiter ]
    [ , SEND = send_function ] [ , RECEIVE = receive_function ]
    [ , PASSEDBYVALUE ]
    [ , ALIGNMENT = alignment ]
    [ , STORAGE = storage ] )
et là je dis KESAKO ? pourquoi la page de doc indiquée me donne une syntaxe diffénente de la doc officielle (pour la même version de PostGreSQL) ? Y a-t-il autre chose que je n'ai pas compris ?

Merci encore!
Sillaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 18h01   #4
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Quelle version de PostgreSQL utilises-tu ?
Parce que la définition des types composites existe depuis la version 7.3 :
Citation:
CREATE TYPE typename AS
( column_name data_type [, ... ] )
A vue de nez, la syntaxe de ta commande est correcte, le problème peut donc venir de ta version...
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 18h05   #5
Invité de passage
 
Inscription : octobre 2004
Messages : 3
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 3
Points : 0
Points : 0
Ben voilà, merci c'est ça...Zut et flutte...j'ai une 7.2!

Y a-t-il un moyen de se débrouilleur quand même en 7.2 ou dois-je envisager rapidement une petite migration ?

Merci
Ghislain
Sillaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 18h20   #6
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Avec la 7.2, à moins d'écrire directement tes fonctions en C (et encore, je ne sais même pas si tu peux renvoyer un jeu d'enregistrement), je ne vois pas trop comment tu pourrais faire ...
Je te conseille donc vivement le passage en 7.3 (personnellement, c'est la possibilité de créer des procédures stockées qui m'a décidé à migrer)
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h24.


 
 
 
 
Partenaires

Hébergement Web