Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 07/01/2008, 18h03   #1
Invité de passage
 
Inscription : septembre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 19
Points : 4
Points : 4
Par défaut Jointure de 2 tables dans un bulk collect

Bonsoir à tous,

ayant cherché pendant un certain temps sur internet, je fais appel à vous !

Sachant que j'ai une table client et une table adresse et que j'ai défini un type de table pour mon bulk collect par:

Code :
TYPE MA_TABLE IS TABLE OF CLIENT%ROWTYPE INDEX BY PLS_INTEGER;
je souhaite faire cette opération ci (récupérer toutes les informations d'un client dans une table du type "MA_TABLE"):

Code :
1
2
3
4
5
SELECT * BULK COLLECT 
INTO CLIENT
FROM CLIENT,ADRESSE
WHERE CLIENT.ID_ADRESSE = ADRESSE.ID_ADRESSE 
AND CLIENT.NOM  = 'nom';
==> Evidemment ceci provoque une erreur, quelqu'un aurait-il la solution ?
Merci d'avance pour votre aide

Bonne soirée
bon4000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h06   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
apparemment t'as pas passé assez de temps

http://sheikyerbouti.developpez.com/...age=Chap5#L5.5
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h12   #3
Invité de passage
 
Inscription : septembre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 19
Points : 4
Points : 4
Citation:
Envoyé par orafrance Voir le message
apparemment t'as pas passé assez de temps

http://sheikyerbouti.developpez.com/...age=Chap5#L5.5
Merci de ta réponse,

mais je vois pas comment résoudre mon problème malgré le lien que tu m'a donné (que j'avais déjà vu :p )

Dois-je déclarer 2 types "Ma_Table" ?!?
bon4000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h17   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
tu dois surtout utiliser un curseur pour faire le BULK COLLECT
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h20   #5
Invité de passage
 
Inscription : septembre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 19
Points : 4
Points : 4
Citation:
Envoyé par orafrance Voir le message
tu dois surtout utiliser un curseur pour faire le BULK COLLECT
Merci de m'aider... mais je débute dans le pl/sql pas évident !

Pourquoi utiliser un curseur, ca permettrait de résoudre mon problème ?
bon4000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h23   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
bah oui, le BULK COLLECT ne s'applique qu'à un curseur... dans le lien que j'ai donné tu vois bien que ta syntaxe est complètement erronnée. Pourquoi tu veux passer par un tableau d'ailleurs ? Et pourquoi un BULK COLLECT ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h33   #7
Invité de passage
 
Inscription : septembre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 19
Points : 4
Points : 4
Enfait, je souhaite via un site web modifier des clients.

J'éffectue d'abord cette méthode:

TabCli := PackageAgence.SearchCli(client=>nom);

TabCli étant égale à la table:

TYPE MA_TABLE IS TABLE OF CLIENT%ROWTYPE INDEX BY PLS_INTEGER;

Après je parcours tout mon bulk collect pour afficher tous les clients du nom mis en paramètre sur le site web et l'utlisateur peut cocher le client (si il y a plusieurs clients avec le même nom) qu'il souhaite modifier.

Mais le problème c'est que ma procédure pour modifier un client prend tous les anciennes informations relative à lui même (nom, prénom, date,...) mais aussi tous les anciens champs de la table adresse (rue, numéro,...)

Vois-tu ce que je veux faire ?
bon4000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h36   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
absolument pas

il me semble que ton problème tiens plus du développement web que PL/SQL... parce que là j'vois pas pourquoi Oracle devrait te fournir un BULK... en tout cas pour ce que je connais du dév Web
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h47   #9
Invité de passage
 
Inscription : septembre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 19
Points : 4
Points : 4
Je m'y prend peut-être mal ^^

Comment ferais-tu pour récupérer toutes les informations relative à un client c-à-d son nom, prénom, date de naissance (table client) et sa rue, numéro, localité (table rue) et afficher toutes ces informations relative à ce client dans une table html ?

Pour ma part, j'ai donc créer une fonction SearchCli(nom) qui prend en paramètre un nom et qui me retourne une table avec tous les informations (table client) du clients dont le nom vaut le nom mis en paramètre, est-ce correct pour toi ?

C'est donc pour cela que j'utilise une table, ainsi je parcours toute ma table (mon bulk collect) ligne par ligne et je l'affiche dans une page html
bon4000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h55   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
t'as regardé du coté de MARKUP dans SQL*Plus ? Après moi, j'y connais rien en développement web, mais il me semble que tu ne le prends pas par le bon bout
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h55   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par bon4000 Voir le message
C'est donc pour cela que j'utilise une table, ainsi je parcours toute ma table (mon bulk collect) ligne par ligne et je l'affiche dans une page html
si t'enléve BULK COLLECT de ta requête ça ne marche pas ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 19h02   #12
Invité de passage
 
Inscription : septembre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 19
Points : 4
Points : 4
Problème résolu en faisant un type_Record, ainsi j'ai tous les champs de ma table client et de ma adresse dans mon type_record !

Si quelqu'un à mieux à proposer que ma solution, je suis partant !

Merci pour ton aide !
bon4000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h12.


 
 
 
 
Partenaires

Hébergement Web