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 SQL : ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à [11gR2]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut Erreur SQL : ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à
    Bonjour,

    J'essaie d'appeler une procédure d'insertion de données existante définie ainsi :
    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
    create or replace PROCEDURE             Ins_Individu_Ulr
    (
    INS_NOM_PATRONYMIQUE         INDIVIDU_ULR.nom_patronymique%TYPE,
    INS_PRENOM                   INDIVIDU_ULR.prenom%TYPE,
    INS_C_CIVILITE               INDIVIDU_ULR.c_civilite%TYPE,
    INS_NOM_USUEL                INDIVIDU_ULR.nom_usuel%TYPE,
    INS_PRENOM2                  INDIVIDU_ULR.prenom2%TYPE,
    INS_D_NAISSANCE                 INDIVIDU_ULR.d_naissance%TYPE,
    INS_VILLE_DE_NAISSANCE       INDIVIDU_ULR.ville_de_naissance%TYPE,
    INS_C_DEPT_NAISSANCE         INDIVIDU_ULR.c_dept_naissance%TYPE,
    INS_C_PAYS_NAISSANCE         INDIVIDU_ULR.c_pays_naissance%TYPE,
    INS_C_PAYS_NATIONALITE       INDIVIDU_ULR.c_pays_nationalite%TYPE,
    INS_D_NATURALISATION         INDIVIDU_ULR.d_naturalisation%TYPE,
    INS_D_DECES                  INDIVIDU_ULR.d_deces%TYPE,
    INS_IND_C_SIT_MILITAIRE      INDIVIDU_ULR.ind_c_sit_militaire%TYPE,
    INS_IND_C_SITUATION_FAMILLE  INDIVIDU_ULR.ind_c_situation_famille%TYPE,
    INS_IND_NO_INSEE             INDIVIDU_ULR.ind_no_insee%TYPE,
    INS_IND_CLE_INSEE            INDIVIDU_ULR.ind_cle_insee%TYPE,
    INS_IND_QUALITE              INDIVIDU_ULR.ind_qualite%TYPE,
    INS_IND_ACTIVITE             INDIVIDU_ULR.ind_activite%TYPE,
    INS_IND_ORIGINE              INDIVIDU_ULR.ind_origine%TYPE,
    INS_IND_PHOTO                INDIVIDU_ULR.ind_photo%TYPE,
    persid                         OUT NUMBER,
    noindividu                     OUT NUMBER
    )

    1) Faut-il envoyer NULL aux deux derniers paramètres qui, si je comprends bien, sont des résultats renvoyés par la procédure ?
    2) J'obtiens l'erreur suivante alors que, a priori, tous mes paramètres sont du bon type.
    Erreur SQL : ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à 'INS_INDIVIDU_ULR'
    ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à 'INS_INDIVIDU_ULR'
    06553. 00000 - "PLS-%s: %s"
    *Cause:
    *Action:
    Oracle ne me dit pas où est précisément l'erreur ; ce serait trop facile !

    EDIT :
    J'appelle la procédure de cette façon dans SQL Developer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grhum.ins_individu_ulr('SON_NOM', 'SON_PRENOM', 'MLLE', 'SON_NOM', NULL, '1992-12-01', 'Fukuoka', NULL, '217', '217', NULL, NULL, 'N', 'X', NULL, NULL, 'ETUDIANT', 'Etudiant', NULL, NULL)
    Les colonnes de la table pour lesquelles j'envoie des NULL sont bien NULLables.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Je mettrais des paramètres pour récupérer les valeurs out, quitte à ne pas les utiliser.
    De plus si INDIVIDU_ULR.d_naissance%TYPE est bien de type date en base, il faut lui passer une date et pas une chaîne de caractère :
    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
    declare
      l_persid number;
      l_noindividu number
    begin
      grhum.ins_individu_ulr( 'SON_NOM'
                            , 'SON_PRENOM'
                            , 'MLLE'
                            , 'SON_NOM'
                            , NULL
                            , to_date('1992-12-01','yyyy-mm-dd')
                            , 'Fukuoka'
                            , NULL
                            , '217'
                            , '217'
                            , NULL
                            , NULL
                            , 'N'
                            , 'X'
                            , NULL
                            , NULL
                            , 'ETUDIANT'
                            , 'Etudiant'
                            , l_persid
                            , l_noindividu
                            );
    end;
    /

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Après une petite correction (il fallait un point-virgule après la déclaration de la deuxième variable), j'obtiens la même erreur :
    Rapport d'erreur -
    ORA-06550: Ligne 5, colonne 3 :
    PLS-00306: numéro ou types d'arguments erronés dans appel à 'INS_INDIVIDU_ULR'
    ORA-06550: Ligne 5, colonne 3 :
    PL/SQL: Statement ignored
    06550. 00000 - "line %s, column %s:\n%s"
    *Cause: Usually a PL/SQL compilation error.
    *Action:
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    J'ai finalement trouvé la solution à ce dernier problème : il manquait effectivement les deux derniers paramètres dans l'appel de la procédure, avant les variables utilisées en paramètres de retour.

    Merci de ton aide.

    Je trouve quand même dommage qu'avec Oracle on soit systématiquement obligé de passer par un to_date pour passer une date et qu'Oracle ne soit pas capable de reconnaître le format standard de date en 'aaaa-mm-jj' !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    ...Je trouve quand même dommage qu'avec Oracle on soit systématiquement obligé de passer par un to_date pour passer une date et qu'Oracle ne soit pas capable de reconnaître le format standard de date en 'aaaa-mm-jj' !
    Le format "standard" pour les dates est celui des paramètres NLS_LANG et oui Oracle fait la coercition automatiquement par rapport à celui ci. Mais une bon habitude de programmation recommande de ne pas se baser sur des transformations des types des données implicites qui sont souvent juste une source des erreurs "subtils".

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

Discussions similaires

  1. Erreur SQL : ORA-00001
    Par Maude_84 dans le forum SQL
    Réponses: 4
    Dernier message: 20/03/2014, 08h17
  2. Réponses: 2
    Dernier message: 18/02/2013, 09h01
  3. ORA-06553: PLS-382: expression du mauvais type
    Par Goupo dans le forum PL/SQL
    Réponses: 4
    Dernier message: 12/02/2009, 10h26
  4. Réponses: 3
    Dernier message: 05/01/2007, 09h45
  5. Numéro d'erreur SQL
    Par BalBalNet dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/06/2006, 15h28

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