Ecrire en PL/SQL une procédure de lookup

igo -  
batmat Messages postés 1880 Date d'inscription   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.

8 réponses

  1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    Ca te va ?

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

    Bonne journée.
    1
  3. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    De rien.
    bonne journée à toi aussi

    (moi c Batmat :) )

    @++
    Poster, poster encore et toujours :-)
    1
  4. batmat Messages postés 1880 Date d'inscription   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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. batmat Messages postés 1880 Date d'inscription   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
  7. 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
  8. igo
     
    j'ai oublié de préciser que je veux le code en paramètre OUT
    0
  9. batmat Messages postés 1880 Date d'inscription   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