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

Oracle Discussion :

pb de creation de procedure...


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut pb de creation de procedure...
    bonjour,

    voila, je debute en pl/sql, et je doit créer des procedures, mais j'ai des erreures que je ne comprend pas, voila ma procedure :

    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
    CREATE OR REPLACE Procedure verif_client(
    vc_refbp IN NUMBER[9],
    vc_mail IN CHAR[100],
    vc_mailok IN SMALLINT,
    vc_newsok IN SMALLINT,
    vc_compteok IN SMALLINT
    )
    IS
    BEGIN
    IF (!EXIST(SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;))
    THEN (INSERT INTO CLIENT (CLI_REFBP,CLI_MAIL,CLI_MAILOK,CLI_COMPTEOK,CLI_NEWSOK) 
    	VALUE (vc_refbp,vc_mail,vc_mailok,vc_compteok,vc_newsok))
    	return "0"
    ELSE
    	IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;)="0")
    	THEN (UPDATE CLIENT SET CLI_COMPTEO;K = "1" WHERE CLI_REFBP = vc_refbp)
    	return "0"
    	ELSE
    		IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;) = "1")
    		THEN RETURN "1"
    		ENDIF
    	ENDIF
    ENDIF
    END;
    et l'erreur est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (S2724) Expecting:    )    ,   :=  CHARACTER  DEFAULT
    elle est sur la ligne :

    si quelqu'un pouvait m'aider a comprendre pourquoi c'est faux, et comment corriger se serait cool merci

    hOAx punK

  2. #2
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    en PL/SQL les longueur/précisions de chaîne ou de nombre doivent être entre parenthèses et pas entre crochet...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    j'ai modifier sa ce qui donne :

    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
    CREATE OR REPLACE Procedure verif_client
    (vc_refbp IN NUMBER(9),
    vc_mail IN CHAR(100),
    vc_mailok IN SMALLINT,
    vc_newsok IN SMALLINT,
    vc_compteok IN SMALLINT)
    IS
    BEGIN
    IF (!EXIST(SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;))
    THEN (INSERT INTO CLIENT (CLI_REFBP,CLI_MAIL,CLI_MAILOK,CLI_COMPTEOK,CLI_NEWSOK) 
    	VALUE (vc_refbp,vc_mail,vc_mailok,vc_compteok,vc_newsok);)
    	return "0";
    ELSE
    	IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;)="0")
    	THEN (UPDATE CLIENT SET CLI_COMPTEO;K = "1" WHERE CLI_REFBP = vc_refbp;)
    	return "0";
    	ELSE
    		IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;) = "1")
    		THEN RETURN "1";
    		ENDIF
    	ENDIF
    ENDIF
    END;
    et pourtant j'ai toujours la meme erreur au meme endroit...

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mai 2004
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 236
    Points : 310
    Points
    310
    Par défaut
    Il ne faut pas préciser la taille du nombre juste mettre number.

    En espérant t'avoir aidé.

  5. #5
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE CLIENT SET CLI_COMPTEO;K = "1" WHERE CLI_REFBP = vc_refbp
    après CLI_COMPTEO il y'a un point virgule, Pourquoi ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    bouyao -> j'ai corriger ce point virgule n'existe pas lol

    j'ai modifier ainsi :

    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
    CREATE OR REPLACE Procedure verif_client
    (vc_refbp IN NUMBER,
    vc_mail IN CHAR(100),
    vc_mailok IN SMALLINT,
    vc_newsok IN SMALLINT,
    vc_compteok IN SMALLINT)
    IS
    BEGIN
    IF (!EXIST(SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;))
    THEN (INSERT INTO CLIENT (CLI_REFBP,CLI_MAIL,CLI_MAILOK,CLI_COMPTEOK,CLI_NEWSOK) 
    	VALUE (vc_refbp,vc_mail,vc_mailok,vc_compteok,vc_newsok);)
    	return "0";
    ELSE
    	IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;)="0")
    	THEN (UPDATE CLIENT SET CLI_COMPTEOK = "1" WHERE CLI_REFBP = vc_refbp;)
    	return "0";
    	ELSE
    		IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;) = "1")
    		THEN RETURN "1";
    		ENDIF
    	ENDIF
    ENDIF
    END;
    et maintenant l'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (S1789) Expecting:    )    ,   :=  CHARACTER  DEFAULT  LARGE  VARYING
    a la ligne :


  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Points : 70
    Points
    70
    Par défaut
    j'ai trouver, j'avance un peu mais c'est pas encore sa :

    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
    CREATE OR REPLACE Procedure verif_client
    (vc_refbp IN NUMBER,
    vc_mail IN CHAR,
    vc_mailok IN SMALLINT,
    vc_newsok IN SMALLINT,
    vc_compteok IN SMALLINT)
    IS
    BEGIN
    IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;) IS NULL)
    THEN (INSERT INTO CLIENT (CLI_REFBP,CLI_MAIL,CLI_MAILOK,CLI_COMPTEOK,CLI_NEWSOK) 
    	VALUES (vc_refbp,vc_mail,vc_mailok,vc_compteok,vc_newsok);)
    	return "0";
    ELSE
    	IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;)="0")
    	THEN (UPDATE CLIENT SET CLI_COMPTEOK = "1" WHERE CLI_REFBP = vc_refbp;)
    	return "0";
    	ELSE
    		IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;) = "1")
    		THEN RETURN "1";
    		ENDIF
    	ENDIF
    ENDIF
    END;
    erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PLS-00103: Symbole "SELECT" rencontré à la place d'un des symboles suivants :
     
       ( - + case mod new not null others <an identifier>
       <a double-quoted delimited-identifier> <a bind variable> avg
    ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF ((SELECT CLI_REFBP FROM CLIENT WHERE CLI_REFBP = vc_refbp;) IS NULL)

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

Discussions similaires

  1. Creation de procedure de stockage
    Par B.M.W83 dans le forum Développement
    Réponses: 1
    Dernier message: 06/06/2014, 20h06
  2. creation de procedures
    Par fasyr dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/03/2009, 13h55
  3. [T-SQL]Creation procedure stockee
    Par dasaiko dans le forum Sybase
    Réponses: 4
    Dernier message: 24/08/2006, 17h01
  4. Réponses: 1
    Dernier message: 31/01/2006, 17h38
  5. creation d'une procedure ou fonction toute simple?
    Par atlas2003 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 16/11/2005, 14h56

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