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 :

[PL/SQL] Curseur avec Paramètre


Sujet :

Oracle

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 154
    Points : 98
    Points
    98
    Par défaut [PL/SQL] Curseur avec Paramètre
    Salut tout le monde,
    J'ai le script suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SET SERVEROUTPUT ON;
    SET ECHO OFF;
    DECLARE
    CURSOR c_liste_dept IS SELECT department_id FROM hr.departments WHERE department_id < 100;
    CURSOR c_liste_emp (dept_id NUMBER(6)) 
    	      IS SELECT last_name, job_id, hire_date, salary 
              FROM hr.employees 
    		  WHERE department_id = dept_id AND employee_id < 120;
    r_info_emp c_liste_emp%ROWTYPE;
     
    BEGIN
    ...
    END;
    Qui ne s'exécute pas.. Le message d'erreur est le suivant :
    SET SERVEROUTPUT ON;
    SET ECHO OFF;
    ORA-06550: Ligne 3, colonne 35 :
    PLS-00103: Symbole "(" rencontré à la place d'un des symboles suivants :

    := . ) , @ % default character
    Symbole ":=" a été substitué à "(" pour continuer.
    Par contre si je remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CURSOR c_liste_emp (dept_id NUMBER(6))
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CURSOR c_liste_emp (dept_id NUMBER)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CURSOR c_liste_emp (dept_id hr.departments.department_id%TYPE)
    Tout marche bien..!!
    Et pourtant le type de ma colonne hr.departments.department_id est bien NUMBER(6).

    Vous avez une idée sur la source du problème :

    Merci d'avance
    ORACLE, A consommer sans modération

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonsoir,


    Bah je crois que tu as trouvé la solution tout seul : quand tu définis les variables de ton curseur, il faut juste préciser le type (NUMBER) et pas la capacité (6 dans NUMBER(6)). Ce qui importe c'est uniquement le type. C'est la même chose quand tu définis les arguments d'une procédure stockée, on précise uniquement le type.

    Cf. http://download-west.oracle.com/docs...htm#SQLRF01309

    Datatypes cannot specify length, precision, or scale. For example, VARCHAR2(10) is not valid, but VARCHAR2 is valid. Oracle derives the length, precision, and scale of an argument from the environment from which the procedure is called.
    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 154
    Points : 98
    Points
    98
    Par défaut
    Oki, ça marche je ne savais pas que cette restriction existait...

    Merci bien
    ORACLE, A consommer sans modération

  4. #4
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Imaginez le temps de maintenance sur les objets procéduraux si vous veniez à changer la taille d'une variable passée en paramètre !
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 154
    Points : 98
    Points
    98
    Par défaut
    Effectivement il est beaucoup de plus intéressant de ne pas spécifier la longueur et la précisons des types. Mais comme PL/SQL est fortement typé, alors je ne m'attendais pas à cela
    ORACLE, A consommer sans modération

  6. #6
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Typé, il l'est !
    Mais comme c'est Oracle, il devine...
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

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

Discussions similaires

  1. [PR-2003] Mise à jour SQL Server avec Paramètre
    Par thorgal1612 dans le forum VBA Project
    Réponses: 2
    Dernier message: 11/02/2014, 10h29
  2. T-SQL curseur avec parametre
    Par nico_liege dans le forum Développement
    Réponses: 5
    Dernier message: 08/10/2009, 15h18
  3. Requête SQL query avec paramètre non représentable graphiquement
    Par bimone dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2009, 17h26
  4. [PL/SQL] Pb avec l'appel d'un curseur paramétré
    Par iiban dans le forum PL/SQL
    Réponses: 4
    Dernier message: 24/07/2009, 16h18
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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