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 :

concatenation dans une variable de procédure stockée


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 41
    Par défaut concatenation dans une variable de procédure stockée
    Bonjour à tous,

    Encore moi désolé c'est des questions un peu bête mais je n'y trouve aucune réponse

    Je cherche à traduire ce passage dans une procédure écrite en T-SQL

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create procedure proc_paie_doublepaie_1003 @cigap char(2)    
    as
    declare @date numeric(8)
    select @date = convert(numeric(8), ('20' + '1003'+ '01'))

    Mis à part que j'ai une partie de ma date qui arrivera d'un paramètre passé dans ma procédure (moisDePaie).

    J'ai testé pas mal de chose, des concat, des to_char
    Code sql : 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
     
    create or replace procedure proc_paie_doublepaie 
    (
    	cigap	         in number,
    	moisDePaie  in number)    
    AS
    BEGIN
     
    declare date1 number
    SELECT date1 = to_char(moisDePaie)|| to_char('01');
     
    FOR rec IN
    	(
    		select IDENT_NOM,     
    			IDENT_IDENT,     
    			AGENT_PAIE_NUMSS,     
    			REFELT_CODE,     
    			REFUP_CODE,     
    			PAIE_MONTANT,     
    			REFGRADE_CODE,     
    			REFCSO_CODE,     
    			AGENT_PAIE_ENTITE,     
    			REFBUR_LIBELLE, 
    			REFFONCTION_CODE
    		from  DOUBLON_PAIE     
    		where AGENT_PAIE_CIGAP like cigap
    		AND AGENT_PAIE_AAAAMM = moisDePaie
    		and AGENT_DATE = date
    		order by IDENT_NOM
    		)
    		loop
    			dbms_output.put_line(rec.IDENT_NOM||' '|| rec.IDENT_IDENT||' '|| rec.AGENT_PAIE_NUMSS||' '|| rec.REFELT_CODE||' '|| rec.REFUP_CODE||' '|| rec.PAIE_MONTANT||' '|| rec.REFGRADE_CODE||' '|| rec.REFCSO_CODE||' '|| rec.AGENT_PAIE_ENTITE||' '|| rec.REFBUR_LIBELLE||' '|| rec.REFFONCTION_CODE);
      	end loop;
    END proc_paie_doublepaie;

    ou encore

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT date1 = concat((moisDePaie,'01'))

    ou encore

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    set date1 = to_char(moisDePaie) || to_char('01')

    rien à faire j'ai les mêmes erreurs qui ressortent

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Error(10,1): PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:     := . ( @ % ; not null range default character The symbol ":= was inserted before "SELECT" to continue. 
     
    Error(13,2): PLS-00103: Encountered the symbol "FOR" when expecting one of the following:     begin function pragma procedure subtype type <an identifier>    <a double-quoted delimited-identifier> current cursor delete    exists prior The symbol "begin" was substituted for "FOR" to continue. 
     
    Error(35,25): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:     ( begin case declare end exception exit for goto if loop mod    null pragma raise return select update while with    <an identifier> <a double-quoted delimited-identifier>    <a bind variable> << continue close current delete fetch lock    insert open rollback savepoint set sql execute commit forall    merge pipe purge

    Je suis déprimé j'ai besoin de vous

    Merci,
    NarbO

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Comme ceci (je ne vous refais pas mon laïus sur la mise en page, les nomenclatures & co, mais c'est toujours d'actualité) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE PROCEDURE proc_paie_doublepaie
    (
        p$_cigap      IN number,
        p$_moisDePaie IN number
    ) AS
     
        v$_date1   number(8);
     
    BEGIN
     
        v$_date1 := p$_moisDePaie * 100 + 1;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 41
    Par défaut
    Bonjour,

    Merci une nouvelle fois pour ton retour !
    Néanmoins j'ai un soucis, car j'ai besoin d'utiliser cette donnée date1 pour la comparer dans un where (AND AGENT_DATE = date1)

    Mais on dirait que ça ne fonctionne pas.. C'est pour ça que sous Sybase il se situe dans un SELECT..

    Merci,
    NarbO

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 41
    Par défaut
    Ok, finalement ça fonctionne mais je comprend pas vraiment pourquoi il ralait autant hier !

    Encore une fois merci,

    J'ai mis ce code là :
    Code sql : 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
     
    create or replace procedure proc_paie_doublepaie 
    (	moisDePaie in number) AS
     
    p$_date1 number(8);
    BEGIN
     
    p$_date1 := moisDePaie|| to_char('01');
    for rec in
    (
    select ident_nom from doublon_paie where agent_date = p$_date1
    )
    loop
      dbms_output.put_line('rec.ident_nom');
    end loop;
     
    END proc_paie_doublepaie;

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

Discussions similaires

  1. Concatenate dans une variable
    Par Sergeras dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 21/02/2009, 21h09
  2. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 11h20
  3. Réponses: 11
    Dernier message: 08/02/2006, 16h59
  4. Concaténer un char et un num dans une variable
    Par ade05fr dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 24/10/2005, 16h32
  5. Réponses: 6
    Dernier message: 05/08/2004, 13h15

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