Rechercher : dans
Par :

Prb! Requete SQL, insert avec select

Dernière réponse le 21 jan 2005 à 13:20:30 Cire, le 19 jan 2005 à 15:44:12 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Prb! Requete SQL, insert avec select » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

Mattiou, le 19 jan 2005 à 16:53:02

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

Répondre à Mattiou

2

Cire, le 19 jan 2005 à 17:01:07

Merci,

C'est pas fou du tout!

Je vais l'écrire!

Merci

Cire

Répondre à Cire

3

 massimo501, le 21 jan 2005 à 13:20:30

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.

Répondre à massimo501