Ecrire en PL/SQL une procédure de lookup

igo -  
batmat Messages postés 1871 Statut Membre -
Débutante en PL/SQL j'aimerais savoir comment écrire une procédure qui fait un lookup c-à-d elle récupère un code (dans une table) en fonction du nom (lue dans une autre table). Exemple:

j'ai une table de référence t1 qui contient le code et le nom des fournisseurs et une table t2 qui n'a que le nom: je voudrais dans t2 alimenter le champ code_four en lisant dans t2 le nom et en allant récupérer dans t1 le code correspondant à ce nom.

Comment écrire cette procédure?

Merci d'avance.
A voir également:

8 réponses

batmat Messages postés 1871 Statut Membre 114
 
Ca te va ?

@++
Poster, poster encore et toujours :-)
1
igo
 
Merci Batman, ça marche.

Bonne journée.
1
batmat Messages postés 1871 Statut Membre 114
 
De rien.
bonne journée à toi aussi

(moi c Batmat :) )

@++
Poster, poster encore et toujours :-)
1
batmat Messages postés 1871 Statut Membre 114
 
Tu veux une procédure => avec le code en paramètre OUT
ou une fonction => tu retournes le code ?

@++
Poster, poster encore et toujours :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
batmat Messages postés 1871 Statut Membre 114
 
Petit pb : quelle est la clé primaire de chacune de tes tables. Indique aussi plutot le schéma ce sera plus clair

exemple
nom_table(champ1, champ2, ..., champn)

Avec les champs soulignés étant les clés primaires. Dès que tu dis ça et que tu réponds aux questions posées, je te donne le code complet de ce que tu veux. :)

@++
Poster, poster encore et toujours :-)
0
igo
 
Hello Batman

voici le schéma:
t1(code_four, nom_four) la clé est code_four
t2(nom_four, code_four, sim) pas de clé

Je pense que c'est une proc de MAJ et je voudrais l'écrire en PL/SQL sur SQL server.

Merci
0
igo
 
j'ai oublié de préciser que je veux le code en paramètre OUT
0
batmat Messages postés 1871 Statut Membre 114
 
Supposons que tu n'as pas deux fournisseurs avec le même nom...
Là je te donne la procédure qui te renvoie un code en fonction d'un nom de fournisseur (en fait, c ta première quetion).

(Si tu veux, il est bien entendu aussi possible de ne passer aucun
paramètre et de mettre directement la table t2 à jour)

procedure lenomquetuveux(nomf varchar2, codef out varchar2)

IS
BEGIN
SELECT code_four into codef
FROM t1
WHERE nom_four=nomf;
END;


Plusieurs choses :
- si plusieurs fournisseurs ont le meme nom et que tu passes ce nom, tu vas recevoir l'exception TOO_MANY_ROWS. Tu peux toutefois l'intercepter avec un bloc exception
- Tu fais quoi de la table t2, pasque dans le cas présent elle ne sert à rien...

@++
Poster, poster encore et toujours :-)
0