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 :

Procédure stockées


Sujet :

PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Procédure stockées
    Salut

    Habitué à SQL Server, je découvre PostgreSQL et je rencontre des problèmes.

    J'ai l'habitude, sous SQL Server, de faire des procédures stockées pour accéder à mes données. C'est à dire que depuis mon programme (ASP.NET), j'appelle la procédure stockée et ce qui concerne le SQL est fait dans la procédure (séparation du code).

    Ayant lu que PostgreSQL supporte les procédures stockées, j'essaye de faire de même (interface Java), et je n'y arrive pas. J'arrive à créer des fonctions qui me renvoient une valeur, mais je n'arrive pas à renvoyer le résultat d'une requète.

    Prenons l'exemple suivant :

    table TOTO
    id champ
    1 coucou
    2 au revoir

    la procédure SQL Server
    CREATE PROCEDURE cherche_texte
    @id integer
    AS
    SELECT
    CHAMP
    FROM
    TOTO
    WHERE
    ID = @id

    En PostgreSQL çà donne
    CREATE OR REPLACE function cherche_texte(int) RETURNS varchar AS '
    BEGIN
    SELECT
    CHAMP
    FROM
    TOTO
    WHERE
    ID = $1;
    END;
    '
    LANGUAGE 'plpgsql';

    Ceci fonctionne.

    Je n'arrive pas à faire l'équivalent de la procédure suivante :

    CREATE PROCEDURE tout_toto
    AS
    SELECT
    *
    FROM
    TOTO

    ...

    En fait je n'arrive pas à trouver quel doit être le type de retour.
    Est ce faisable?
    Je vais quand même pas être obligé de mettre la requète en dur dans le code java?


    Merci

    Eric

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    - Pour renvoyer un jeu d'enregistrement à partir d'une procédure stockée, il faut déclarer la variable de sortie comme étant du type SETOF de la table (ce type de procédure stockée est nommé SRF dans la documentation, pour Set Returning Functions)
    - Ta fonction étant triviale, tu peux te contenter de l'écrire en langage SQL

    Concrètement, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE OR REPLACE FUNCTION tout_toto() RETURNS SETOF TOTO AS 'SELECT * FROM TOTO' LANGUAGE 'SQL';
    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

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci!
    Merci pour la réponse.

    En fait ce qui me change le plus c'est cette nécessité de 'typer' la fonction.

    J'ai trouvé aussi le type refcursor, cela semble fonctionner aussi mais je ne sais pas si c'est aussi bien.

    Vient de la doc :

    CREATE FUNCTION func2() RETURNS refcursor AS '
    DECLARE
    ref refcursor;
    BEGIN
    OPEN ref FOR SELECT col FROM test;
    RETURN ref;
    END;
    ' LANGUAGE 'plpgsql';


    Eric

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

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