Rechercher : dans
Par :

Ecrire en PL/SQL une procédure de lookup

Dernière réponse le 24 jun 2003 à 10:01:31 igo, le 22 jun 2003 à 14:27:02 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Ecrire en PL/SQL une procédure de lookup » dans :
PL/SQL - Introduction au langage PL/SQL Voir Introduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...

1

batmat, le 23 jun 2003 à 09:42:21

Tu veux une procédure => avec le code en paramètre OUT
ou une fonction => tu retournes le code ?

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

Répondre à batmat

2

batmat, le 23 jun 2003 à 09:57:59

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 :-)

Répondre à batmat

3

igo, le 23 jun 2003 à 15:40:40

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

Répondre à igo

4

igo, le 23 jun 2003 à 15:42:59

J'ai oublié de préciser que je veux le code en paramètre OUT

Répondre à igo

5

batmat, le 23 jun 2003 à 16:02:56

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 :-)

Répondre à batmat

6

batmat, le 24 jun 2003 à 09:18:56

Ca te va ?

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

Répondre à batmat

7

igo, le 24 jun 2003 à 09:28:06

Merci Batman, ça marche.

Bonne journée.

Répondre à igo

8

 batmat, le 24 jun 2003 à 10:01:31

De rien.
bonne journée à toi aussi

(moi c Batmat :) )

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

Répondre à batmat