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

SQL Firebird Discussion :

pb execute statement et les accents


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 7
    Par défaut pb execute statement et les accents
    Bonjour
    j'ai cré une base de données firebird qui utilise la charset ISO 8859_1 par défault afin de permettre de stocker les caractères francais.
    tout marchait bien jusqu'a ce que j'ai ecrit une procedure stocké select qui renvoie les libelles des articles commencant par la variable en entree

    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
     
    SET TERM ^ ;
     
    CREATE PROCEDURE GET_ARTICLES(
        VAR VARCHAR(40),
        RETURNS (
        CODE VARCHAR(10),
        NOM VARCHAR(40),
        )
    AS
    DECLARE VARIABLE SQL VARCHAR(1000);
    begin
        sql = "select  art_code, art_nom  from t_article  where art_nom  starting with '" || :var || "'";
     
    for
    execute statement sql into :code, :nom, 
    do
        suspend;
    end
    ^
    SET TERM ; ^
    lorsque j'utilise cette procédure depuis mon application, les accents ne sont pas affichés correctement mais sont remplacés par des caractères indéfinies.

    bizaremment j'ai crée une autre proc stockée qui n'utilise pas execute statement tous les articles avec accent sont affichés correctement.

    le pb vient alors du execute statement.
    merci

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    et quel est l'interêt d'utiliser un execute statement ?
    cela ne sert à rien ici

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 7
    Par défaut
    bonjour,

    oui mais la procédure stockée que je viens de la citer je l'ai crée que pour faire le test, j'avais d'autres ps plus compliqueés et dont l'utilisation de execute statement est obligatoire.


    ces procédures stockées acceptent des parametres qui vont etre utilisé pour generer ma requete SQL.

    voici un exemple de traitement

    sql = "select .... from ..... ";
    if(:param1 = 1) then
    sql = sql || ...;

    if(:param2 = 5) then
    sql = sql || ...;

    for
    execute statement sql into ....
    do
    suspend;
    je ne trouve pas le moyen d'ecrire des procedures stockées qui acceptent des parametres sans l'utilisation de "execute statement"?

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Effectivement l'EXECUTE STATEMENT est superflu.
    Pour reprendre la PS ton 1° post, elle peut s'écrire tout simplement comme ceci:
    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
     
    SET TERM ^ ;
     
    CREATE PROCEDURE GET_ARTICLES(
      VAR VARCHAR(40),
    RETURNS (
      CODE VARCHAR(10),
      NOM VARCHAR(40),
    )
    AS
    begin
    for
      select art_code, art_nom
      from t_article
      where art_nom starting with :VAR
      into :CODE, :NOM;
    do
      suspend;
    end
    ^
    SET TERM ; ^
    Ensuite si tu veux exécuter une requête adaptée à ton paramètre d'entrée, utilises des if pour contruire tes requêtes qui vont bien.
    @+ Claudius

Discussions similaires

  1. [FoxPro]Instruction pour enlever les accents ?
    Par Fab-FoxPro dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 02/01/2025, 15h09
  2. [String] Comment supprimer les accents
    Par iuz dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 08/03/2004, 02h58
  3. [JDBC] Problème avec les accents
    Par seawolfm dans le forum Administration
    Réponses: 2
    Dernier message: 29/01/2004, 14h56
  4. les accents et printf
    Par remi77 dans le forum C
    Réponses: 5
    Dernier message: 07/07/2003, 20h53
  5. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

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