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 22/11/2011, 23h36   #1
Invité de passage
 
Homme sofiane
master1
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme sofiane

Informations professionnelles :
Activité : master1

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Transmission de valeur par paramètre

Salutations !!

J'aurais besoin d'aide pour un exercice qui demande d’écrire un bloc PL/SQL pour récupérer le max dans une table qui s'appelle departments.
Le modifier pour insérer un nouveau département nommé informatique et lui associer un department-id=résultat précédent +10.
Ensuite modifier le programme pour mettre à jour la colonne qui s'appelle location-id.
" la valeur de location-id doit être transmis sous forme de paramètre" voila mon programme après la deuxième modification :
Code :
1
2
3
4
5
6
7
8
9
10
11
declare
nb departments.department-id%type;
begin 
    SELECT max(department-id)
    INTO nb
    FROM departments;
 
    INSERT INTO departments (department_id,department_name)
    VALUES (nb+10 ,'informatique');
    commit;
end;
Pour la troisième modification un ami m'a donné le programme suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
declare
num number;
loc varchar(30):='&va';   -----> ça doit être ça le paramètre ?
begin
SELECT max(department_id)
INTO num
UPDATE departments 
SET location_id=&var     --> pourquoi ne pas utiliser la variable declarée avant "loc"
 
WHERE department_id=num+10;
commit;
end;
J'aimerais bien que quelqu'un puisse m'expliquer la question (la valeur de location_id doit être transmise sous forme de paramètre) et des solutions si c'est possible !

Merci d’avance !
mdj-sofiane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 21h56   #2
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

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

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
Comme quoi il ne faut pas toujours compter sur les amis et éventuellement leur demander des explications directement.

Le script suivant (repris de ton message) va demander de saisir une valeur pour va et une valeur pour var (1). Il affecte la valeur de va à loc et n'utilise pas loc (2). On ne sait pas dans quelle table la valeur num est récupérée (3).


Code :
1
2
3
4
5
6
7
8
9
10
11
declare
num number;
loc varchar(30):='&va';     -- (1)
begin
SELECT max(department_id)
INTO num                       -- (3)
UPDATE departments 
SET location_id=&var        -- (2)
WHERE department_id=num+10;
commit;
end;
Pourquoi ne pas faire une procédure ?
Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE OR REPLACE procedure maj (loc IN varchar2) AS
nb departments.department_id%type;
begin 
    SELECT max(department_id)
    INTO nb
    FROM departments;
 
    INSERT INTO departments (department_id,department_name,location_id)
    VALUES (nb+10 ,'informatique',loc);
    commit;
end;
Vous étiez sur la bonne piste ...
ojo77 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 17h30.


 
 
 
 
Partenaires

Hébergement Web