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 :

Fonction, je tourne en rond sur la sortie . . .


Sujet :

PostgreSQL

  1. #1
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut Fonction, je tourne en rond sur la sortie . . .
    Salut,

    voici une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE T_DAT 
    (ID   INT  NOT NULL PRIMARY KEY, 
     DAT  DATE NOT NULL);
    et une fonction PG/PL SQL censée remplir la table :
    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
    CREATE FUNCTION SET_DATES (IN dd DATE, IN df DATE) RETURNS INTEGER
    AS '
    DECLARE d DATE;
            result  INT := 1;
    BEGIN
     d := dd;           
    WHILE d < df 
    LOOP
       INSERT INTO T_DAT (ID, DAT) VALUES (result, d);
       d := d + INTERVAL ''1 DAY'';
       result := result + 1;
    END LOOP;
    RETURN (result);
    END;'
    LANGUAGE 'plpgsql';
    Voila l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F_SET_DATES ('20010101', '20101231')
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ERREUR:  control reached end of function without RETURN
    CONTEXTE : PL/pgSQL function "f_set_dates"
     
    ********** Erreur **********
     
    ERREUR: control reached end of function without RETURN
    État SQL :2F005
    Contexte : PL/pgSQL function "f_set_dates"
    Je n'arrive pas à trouver :
    • soit la façon de corriger le code pour que la requête finale marche,
    • soit la façon d'exécuter la fonction (EXECUTE ? , PERFORMN ??, CALL ???)


    merci aux bonnes âmes de me tirer de ce mauvais pas !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Salut,

    voici une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE T_DAT 
    (ID   INT  NOT NULL PRIMARY KEY, 
     DAT  DATE NOT NULL);
    et une fonction PG/PL SQL censée remplir la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE FUNCTION SET_DATES (IN dd DATE, IN df DATE) RETURNS
    Voila l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F_SET_DATES ('20010101', '20101231')
    SET_DATES <> F_SET_DATES

    testé ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT SET_DATES ('20010101', '20101231') ;
     set_dates 
    -----------
          3652
    (1 row)

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Syndrome céphalorectal !...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Cette fonction ne tourne pas rond je pence !
    Par Dr_shaman dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/06/2008, 12h01
  2. Paramètres GET & fonction qui tourne en rond
    Par bigltnt dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2007, 11h06
  3. Prog qui tourne en rond :-(
    Par FranckDev dans le forum CORBA
    Réponses: 2
    Dernier message: 07/09/2005, 13h50
  4. Je tourne en rond....
    Par Ol dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/02/2005, 07h54
  5. Execution d'une fonction lors de l'appui sur CTRL+ALT+I
    Par cyberlewis dans le forum Windows
    Réponses: 4
    Dernier message: 17/03/2004, 01h35

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