Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 13h00   #1
Invité régulier
 
titeuf
Étudiant
Inscription : novembre 2009
Messages : 63
Détails du profil
Informations personnelles :
Nom : titeuf

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 63
Points : 6
Points : 6
Par défaut un vide dans ma table ?

bonjour les amis

j ai Créer un bloc PL/SQL qui détermine les employés ayant les salaires les plus élevés , et Dans une boucle,j ai récupérez les noms et salaires des personnes les mieux rémunérées dans la table EMP. puis j ai Enregistrez les noms et salaires dans la table TOP_DOGS que j ai déjà créé

Code :
1
2
3
4
 
CREATE TABLE top_dogs(
    name varchar2(10),
    salary number(11,2));


Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
SQL> accept &n prompt 'entrez le nombre des employes les mieux rémunérés:
entrez le nombre des employés les mieux rémunérés:8
SQL> declare
  2      cursor c_sal is select ename,sal from emp order by sal desc;
  3      salaire emp.sal%type;
  4      nom emp.ename%type;
  5      nbr number(5) ;
  6      begin
  7      open c_sal;
  8      select count(*) into nbr from emp;
  9      for i in 1..&n loop
 10      if(&n<>0 and &n<nbr) then
 11      fetch c_sal into nom,salaire;
 12      insert into top_dogs values(nom,salaire);
 13      end if;
 14     end loop;
 15     close c_sal;
 16     end;
 17     /
ancien   9 :     for i in 1..&n loop
nouveau   9 :     for i in 1..7 loop
ancien  10 :     if(&n<>0 and &n<nbr) then
nouveau  10 :     if(7<>0 and 7<nbr) then
 
ProcÚdure PL/SQL terminÚe avec succÞs.
 
SQL> select * from top_dogs;
 
NAME           SALARY
---------- ----------
 
 
 
 
 
 
 
 
 
 
 
 
NAME           SALARY
---------- ----------
 
JAMES
youne
younes
king             5000
FORD             3000
SCOTT            3000
JONES            2975
 
19 ligne(s) sÚlectionnÚe(s).
1)je sais pas pourquoi dans la boucle il ya
ancien 9 : for i in 1..&n loop
nouveau 9 : for i in 1..7 loop
alors que moi j ai tapez 8 pour la variable de substitution &n;
2)un autre problème dans l'affichage la premier partie est vide en plus il me renvoi 19 ligne au lieu de 8 lignes

merci pour votre soutien .
titeufdev est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/01/2011, 15h53   #2
Membre chevronné
 
Avatar de Z3phur
 
Homme loic
Administrateur de base de données
Inscription : décembre 2007
Messages : 673
Détails du profil
Informations personnelles :
Nom : Homme loic
Âge : 37
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Industrie

Informations forums :
Inscription : décembre 2007
Messages : 673
Points : 773
Points : 773
Bonjour,

pourquoi ne fais-tu pas :

Code :
1
2
3
define nbr=&1;
INSERT INTO top_dogs
SELECT ename, sal FROM (SELECT ename,sal FROM emp WHERE ORDER BY sal DESC) WHERE rownum <= &nbr;
__________________
==========================================
La justice sans la force est impuissante, la force sans la justice est tyrannique...
Z3phur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 17h09   #3
Invité régulier
 
titeuf
Étudiant
Inscription : novembre 2009
Messages : 63
Détails du profil
Informations personnelles :
Nom : titeuf

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 63
Points : 6
Points : 6
bonsoir Z3phur
oui pourquoi pas, mais comme je suis débutant en plsql je test les curseurs pour savoir comment ça marche, alors ça sera sympa si tu m explique se que je dois modifier dans mon bloc pour ajouter ton code
titeufdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 17h15   #4
Membre chevronné
 
Avatar de Z3phur
 
Homme loic
Administrateur de base de données
Inscription : décembre 2007
Messages : 673
Détails du profil
Informations personnelles :
Nom : Homme loic
Âge : 37
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Industrie

Informations forums :
Inscription : décembre 2007
Messages : 673
Points : 773
Points : 773
En fin de compte ici le code que je t'ai donné c'est du sql.

tu le code dans un fichier .sql et tu lances ce fichier de la façon suivante :

Code :
1
2
sqlplus toto/toto
@monfichier.sql 8
__________________
==========================================
La justice sans la force est impuissante, la force sans la justice est tyrannique...
Z3phur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 21h12   #5
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
Bonjour,
C'est
et non
Cordialement,
Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h20.


 
 
 
 
Partenaires

Hébergement Web