Prb! Requete SQL, insert avec select

Bonjour, j'ai un problème, je fais des requête SQL dans Oracle.

Je recois le message du genre: "paramètre insuffisant."

J'ai une variable de type SEQUENCE: seqRetraite

Voici ma requête:

INSERT INTO  retraite
(noRet, dateRetraite, nomR, noDept, dateEmbauche)
    VALUES(seqRetratraite.NEXTVAL, SYSDATE, 
          (SELECT nomE, noDept, dateEmbauche
              FROM emp
              WHERE dateEmbauche < 
                             TO_DATE('01/01/1982', 'DD/MM/YYYY')));


Je cherche à ajouter plusieur ligne dans "retraite" d'où 3 variables viennent de "emp' sous une certaine condition.

Quelqu'un peut-il voir le problème?

Merci de votre précieuse aide!

Cire

2 réponses

  1. Le souci est très clair, ton "insert" attend 5 paramètres
    (noRet, dateRetraite, nomR, noDept, dateEmbauche)
    alors
    que ton "select" (ta sous-requête)
    ne revoie que 3 paramètres ...
    soit tu peux remplir via un null pour les paramètres vides
    soit tu t'arranges pour que ton select revoie les 5 paramètres
    avec les types correspondant
    voilà.

    bon travail.
    1. Salut,
      à mon avis le pb vient de la syntaxe : je crois pas qu'on puisse faire un medley des deux formes d'insert possible à savoir
      "Insert into TABLE values(...)"
      et
      "Insert into TABLE select ........"
      Du coup je pense que tu devrais utiliser la 2eme syntaxe en écrivant :
      "INSERT INTO retraite(noRet, dateRetraite, nomR, noDept, dateEmbauche) SELECT seqRetratraite.NEXTVAL, SYSDATE, nomE, noDept, dateEmbaucheFROM emp WHERE dateEmbauche < TO_DATE('01/01/1982', 'DD/MM/YYYY') ".
      Voili voilou,
      amuses toi bien

      Mattiou
      1. Merci,

        C'est pas fou du tout!

        Je vais l'écrire!

        Merci

        Cire