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 :

Création d'une procédure sur un texte


Sujet :

PostgreSQL

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 851
    Points : 4 743
    Points
    4 743
    Par défaut Création d'une procédure sur un texte
    Bonjour

    Je me heurte à un petit problème pour une de mes procédures stockée.
    Voici ma procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE FUNCTION check_string_length("string" text, "length" smallint) returns boolean as language plpgsql;
    declare
    compte smallint;
    begin
    compte:=char_length(string);
    if (compte > length)
    then
    return false;
    else
    return true;
    end if;
    end;
    Mon problème réside en l'appel de ma fonction, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    senegene=> select * from check_string_length('bioxpr', 8);
    ERREUR:  la fonction check_string_length("unknown", integer) n'existe pas
    ASTUCE : Aucune fonction ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type.explicit type casts.
    Wow !
    Quelle est mon erreur ?
    Merci d'avance de votre aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre habitué Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Points : 197
    Points
    197
    Par défaut
    Je l'ai testé, remplace "smallint" par "integer". Ca fonctionne !!!
    Sud04

  3. #3
    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,

    ta fonction ne renvoyant pas de jeu d'enregistrement (avec un SET OF), il s'agit plus d'une fonction proprement dite que d'une procédure stockée. Elle devrait donc apparaître plus du côté du SELECT que de celui de la clause FROM (mais cela fonctionne tout de même). Enfin, PostgreSQL 8 est plus regardant que les versions précédentes en ce qui concerne le contrôle du type des arguments de fonctions, il est souvent nécessaire de "caster" ces arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT check_string_length('bioxpr'::text, 8::smallint) AS result
    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

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 851
    Points : 4 743
    Points
    4 743
    Par défaut
    Ok, j'ai fait la modif', ça fonctionne en effet.
    Je met le tag en résolu et je te remercie budtucker.
    Toutefois, j'aimerais bien savoir pourquoi avec un smallint ça ne fonctionne pas alors qu'avec un integer, cela tourne très bien

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  5. #5
    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
    Citation Envoyé par GLDavid
    Toutefois, j'aimerais bien savoir pourquoi avec un smallint ça ne fonctionne pas alors qu'avec un integer, cela tourne très bien
    Parce qu'il doit faire un cast automatique de la valeur litérale 8 en integer, ce qui fait qu'il ne peut pas faire de correspondance avec la fonction qui prend un smallint en paramètre.
    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

  6. #6
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 851
    Points : 4 743
    Points
    4 743
    Par défaut
    Ok GrandFather, mes recherches sur la doc PostgreSQL m'ont conduit à la même conclusion.
    Merci à tous !
    Happy hacking

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Création d'une DataSource sur tomcat-5.5.17
    Par al3alwa dans le forum NetBeans
    Réponses: 1
    Dernier message: 28/08/2007, 22h51
  2. Création d'une procédure dans une base externe par code
    Par AndréPe dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/07/2007, 11h19
  3. [VBA]Création d'une procédure de recherche
    Par Thegad dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/04/2007, 19h16
  4. afficher une info sur du texte au passage de la souris
    Par incao dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/06/2006, 10h21
  5. [DB2]Eurreur lors de la création d'une procédure
    Par uaspecitmoon dans le forum DB2
    Réponses: 1
    Dernier message: 25/05/2005, 20h23

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