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 :

Procedures stockées qui appellent un autre ?


Sujet :

PostgreSQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut Procedures stockées qui appellent un autre ?
    Bonjour,

    j'ai une question a poser aux experts que vous etes.
    J'ai lu les différentes docs de SQLPro sur ce theme mais je n'ai pas trouvé.

    comment faire en sorte que lorsque que j'execute ce code
    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 deleteantiquaire(int4)
      RETURNS int4 AS
    $BODY$
    DECLARE 
    	identifiant ALIAS FOR $1;
    	r record;
    BEGIN
    	for r in select id_objet from objet_commun where id_antiquaire = identifiant loop
     
    	end loop;
    END;
    %BODY%
    LANGUAGE 'plpgsql' VOLATILE;
    je puisse appeller une autre PS qui effacera tous les id_objets et appellera une autre etc.
    J'aurais pu tester mais ma base pourrait en subir les conséquences. Ca risquerait de gueuler mais si ce n'est evidemment pas la base de prod.

    Merci d'avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    bon, j'ai enfin trouvé grace a la doc officielle ! ok, je sors

    mais mon code ne semble pas fonctionner. La fonction est bien créée mais elle n'est aps executée
    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
    CREATE OR REPLACE FUNCTION deleteantiquaire(int4)
      RETURNS int2 AS
     
    DECLARE identifiant ALIAS FOR $1;
    DECLARE r record;
    BEGIN
    	for r in select id_objet from objet_commun where id_antiquaire = identifiant loop
    		deleteobjet(r.id_objet);
    	end loop;
    	DELETE FROM antiquaire_prestation WHERE id_antiquaire = identifiant; 
    	DELETE FROM boutique_specialites  WHERE id_antiquaire = identifiant; 
    	DELETE FROM pages_perso	 	  WHERE id_antiquaire = identifiant; 
    	DELETE FROM antiquaire_client     WHERE id_antiquaire = identifiant; 
    	DELETE FROM francais	 	  WHERE id_antiquaire = identifiant; 
    	return 0;
    END;
     
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION deleteantiquaire(int4) OWNER TO postgres;
    GRANT EXECUTE ON FUNCTION deleteantiquaire(int4) TO public;
    GRANT EXECUTE ON FUNCTION deleteantiquaire(int4) TO postgres;
    J'obtiens ceci à l'execution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ERROR:  syntax error at or near "deleteobjet" at character 1
    QUERY:  deleteobjet( $1 )
    CONTEXT:  PL/pgSQL function "deleteantiquaire" line 6 at SQL statement
    ... La je seche !

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Autant pour moi

    pour les newbies comme moi, ca peut toujours servir

    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
    22
    23
    CREATE OR REPLACE FUNCTION deleteantiquaire(int4)
      RETURNS int2 AS
    $BODY$
    DECLARE identifiant ALIAS FOR $1;
    DECLARE r record;
    BEGIN
    	for r in select * from objet_commun where id_antiquaire = identifiant loop
    		perform deleteobjet(r.id_objet);
    	end loop;
    	DELETE FROM antiquaire_prestation WHERE id_antiquaire = identifiant; 
    	DELETE FROM boutique_specialites  WHERE id_antiquaire = identifiant; 
    	DELETE FROM pages_perso_eng 	  WHERE id_antiquaire = identifiant; 
    	DELETE FROM pages_perso_fra 	  WHERE id_antiquaire = identifiant; 
    	DELETE FROM pages_perso	 	  WHERE id_antiquaire = identifiant; 
    	DELETE FROM antiquaire_client     WHERE id_antiquaire = identifiant; 
    	DELETE FROM francais	 	  WHERE id_antiquaire = identifiant; 
    	return 0;
    END;
    $BODY$
      LANGUAGE 'plpgsql';
    ALTER FUNCTION deleteantiquaire(int4) OWNER TO postgres;
    GRANT EXECUTE ON FUNCTION deleteantiquaire(int4) TO public;
    GRANT EXECUTE ON FUNCTION deleteantiquaire(int4) TO postgres;

  4. #4
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Je me permet juste de souligner, pour les newbies :
    on appelle une fonction avec l'instruction perform

    (Desole Tchinkatchuk, mais ce n'etait pas tres visible ta modif)
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    il n'y a pas de problemes !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/03/2014, 18h02
  2. procédure stockée qui appelle une autre
    Par da_latifa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/02/2010, 23h28
  3. procedure stockée qui lance d'autre
    Par Soulkeum dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/03/2008, 18h44
  4. Procedure stockée qui ne s'exe pas complètement
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/01/2005, 14h38
  5. Procedure stockée qui retourne un curseur
    Par kinaï dans le forum Débuter
    Réponses: 1
    Dernier message: 10/08/2004, 14h42

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