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

PL/SQL Oracle Discussion :

Erreur de chaine de charactères - SQL dynamique


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut Erreur de chaine de charactères - SQL dynamique
    Bonjour,

    Je souhaite crée une requete SQL dynamique dans une procedure, lorsque je compile il n'y a pas d'erreur mais lors de l'execution une erreur sur la taille de la chaine de charactere aparait, pourriez vous m'aidez?
    voici le code :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    CREATE OR REPLACE Package PKS_Tableau Is
     
    procedure TableauMiParcours (ar1 MATCH.ALLERRETOUR%type, domicileLocale1 int);
     
    end PKS_Tableau;
    /
    create or replace package body PKS_Tableau is
     
    procedure TableauMiParcours (ar1 MATCH.ALLERRETOUR%type, domicileLocale1 int) is
     
    ar MATCH.ALLERRETOUR%type;
    domicileLocale int;
    equipe MATCH.EQUIPELOCALE%type;
    point MATCH.POINTSLOCAUX%type;
    malus MATCH.MALUSLOCAUX%type;
    scoreFinal MATCH.LOCAUXSCOREFINALMATCH%type;
    scoreMiTemps MATCH.LOCAUXSCOREMITEMPS%type;
    debSaison SAISONFOOT.ANDEBSAISON%type;
    finSaison SAISONFOOT.ANFINSAISON%type;
    sens char(1);
    Requete VARCHAR2(30000);
     
    begin
    	domicileLocale := domicileLocale1;
    	ar := ar1;
     
    	If domicileLocale = 1 then
    		equipe := 'equipelocale';
    		sens :='>';
    		point := 'POINTSLOCAUX';
    		malus := 'MALUSLOCAUX';
     
     
    		Requete := 'create or replace view TAD AS select :1, sum(:2)- sum(:3) AS POINTS_DOMICILE_ALLER from match where ALLERRETOUR = :4 AND matchjoue= 1 group by :1;';
     
    		EXECUTE IMMEDIATE Requete using equipe,point,malus,ar;
    	end If;
     
    end;	
     
    end PKS_Tableau;
    /
     
     
    EXECUTE PKS_Tableau.TableauMiParcours('A',1);
    et le message d'errreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Package cree.
     
     
    Corps de package cree.
     
    BEGIN PKS_Tableau.TableauMiParcours('A',1); END;
     
    *
    ERREUR a la ligne 1 :
    ORA-06502: PL/SQL : erreur numerique ou erreur sur une valeur: tampon de chaine de caracteres trop petit
    ORA-06512: a "PSYRIO.PKS_TABLEAU", ligne 22
    ORA-06512: a ligne 1
    Pourriez vous m'aidez?

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Et bien c'est clair. L'une de vos variables n'est pas du bon type ou de taille insuffisante pour accueillir la donnée.

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Je rajoute
    Le bind variable avec execute immediate ne doit pas être utilisé pour remplacer des noms de colonne ou des noms de table.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'select :1 from dual' using 'dummy'
    va renvoyer 'dummy' et pas 'X'

Discussions similaires

  1. [sql dynamique] Erreur avec EXECUTE IMMEDIATE
    Par Foublanc1 dans le forum SQL
    Réponses: 0
    Dernier message: 06/05/2013, 14h46
  2. Construire une chaine sql dynamiquement avec IN
    Par beegees dans le forum Langage
    Réponses: 1
    Dernier message: 23/03/2009, 11h09
  3. SQL dynamique
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/08/2004, 10h18
  4. SQL Dynamique - Materialized view
    Par Simeans2004 dans le forum SQL
    Réponses: 15
    Dernier message: 10/06/2004, 17h56
  5. Erreur EACCESSVIOLATION avec des compsts créés dynamiquement
    Par tsikpemoise dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/02/2004, 19h05

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