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

PHP & Base de données Discussion :

Ambiguous function: 7 ERROR: function f_get_blabla(unknown, unknown, unknown, unknown) is not unique [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    lr
    lr est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Points : 114
    Points
    114
    Par défaut Ambiguous function: 7 ERROR: function f_get_blabla(unknown, unknown, unknown, unknown) is not unique
    Bonjour,

    Dans mon projet, je suis passé de creole à PDO (upgrade de symfony 0.6 à symfony 1.2).

    Avec creole, je faisais ça :
    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
    24
    25
    26
    27
    $con = Propel::getConnection();        // connect to database
            $query = "select * from f_get_global_param_value_text(?, ?, ?, ?)";
            $stmt = $con->prepareStatement( $query );
            $stmt->setInt( 1, $groupeAgenceId );
            $stmt->setInt( 2, $agenceId );
            $stmt->setInt( 3, $employeeId );
            $stmt->setString( 4, $paramName );
     
            try
            {
                $rs = $stmt->executeQuery();
            }
            catch (SQLException $sql_exception)
            {
                return null;
            }
     
            if ( $rs->next() )
            {
                $paramValue = $rs->getString( "f_get_global_param_value_text" );
            }
            else
            {
                return null;
            }
     
            return $paramValue;
    Maintenant, j'ai du adapter comme ça :
    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
    24
    25
    26
    27
    $con = Propel::getConnection();        // connect to database
            $query = "select * from f_get_global_param_value_text(?, ?, ?, ?)";
            $stmt = $con->prepare( $query );
            $stmt->bindValue( 1, $groupeAgenceId );
            $stmt->bindValue( 2, $agenceId );
            $stmt->bindValue( 3, $courtierId );
            $stmt->bindValue( 4, $paramName );
     
            try
            {
                $stmt->execute();
            }
            catch (PDOException $sql_exception)
            {
                return null;
            }
     
            if ( $rs->next() )
            {
                $paramValue = $rs->getString( "f_get_global_param_value_text" );
            }
            else
            {
                return null;
            }
     
            return $paramValue;
    Mais ça ne marche pas, voilà ce que j'obtiens comme erreur dans $sql_exception :
    Ambiguous function: 7 ERROR: function f_get_global_param_value_text(unknown, unknown, unknown, unknown) is not unique

    Le problème, c'est que dans la base j'ai plusieurs fonctions du même nom avec des signatures différentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f_get_global_param_value_text(p_key_level character varying, p_key_id character varying, p_param_nom character varying, p_parameter character varying[])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f_get_global_param_value_text(p_groupe_agence_id integer, p_agence_id integer, p_courtier_id integer, p_param_nom character varying)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f_get_global_param_value_text(p_key_level character varying, p_key_id character varying, p_param_nom character varying)
    Là, en l'occurence, c'est la deuxième qui devrait être appelée.

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $stmt->bindValue( 1, $courtier->getAgence()->getGroupeAgence()->getId(), PDO::PARAM_INT );
            $stmt->bindValue( 2, $courtier->getAgence()->getId(), PDO::PARAM_INT );
            $stmt->bindValue( 3, $courtier->getId(), PDO::PARAM_INT );
            $stmt->bindValue( 4, $paramName, PDO::PARAM_STR );
    et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $stmt->bindValue( 1, (int)$courtier->getAgence()->getGroupeAgence()->getId(), PDO::PARAM_INT );
            $stmt->bindValue( 2, (int)$courtier->getAgence()->getId(), PDO::PARAM_INT );
            $stmt->bindValue( 3, (int)$courtier->getId(), PDO::PARAM_INT );
            $stmt->bindValue( 4, (string)$paramName, PDO::PARAM_STR );
    mais ça ne change rien...

    Je ne suis pas sûr de comprendre où est le problème.

    Comment faire sans modifier ce qu'il y a dans postgres ?

    Merci d'avance

  2. #2
    lr
    lr est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Points : 114
    Points
    114
    Par défaut
    Si j'exécute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from f_get_global_param_value_text(6, 11, 18, 'TRAITEMENT_ACTIF_ECHU_DEFAUT')
    directement dans postgresql, ça fonctionne bien.

  3. #3
    lr
    lr est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Points : 114
    Points
    114
    Par défaut
    OK j'ai trouvé. Il faut préciser le type de paramètres au niveau de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "select * from f_get_global_param_value_text(cast (? as integer), cast (? as integer), cast (? as integer), cast (? as varchar))";

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

Discussions similaires

  1. [EasyPHP] error function.include pour require
    Par LDDbyD dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 11/05/2012, 12h13
  2. Error Function within a loop
    Par helkøwsky dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/09/2011, 17h00
  3. Fatal error : function get_magic_quotes_gpc()
    Par apt dans le forum Langage
    Réponses: 10
    Dernier message: 20/04/2011, 15h26
  4. Réponses: 4
    Dernier message: 17/06/2010, 18h51

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