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 30/05/2011, 09h38   #1
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Par défaut Sélectionner le 1er enregistrement

Bonjour, je voudrai savoir si il est possible de sélectionner un enregistrement (le 1er) et de ne travailler que sur celui la car il se peut dans mon cas que le 1er enregistrement de soit pas le même d'une dixième de seconde a une autre et donc cela pourrai produire une multitude d’erreur lors de l’exécution de mon programme. Si oui comment faire?
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 10h14   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Oui, comme ça :

Code :
1
2
3
4
SELECT * FROM
(SELECT * FROM tatable ... 
ORDER BY <ce que tu veux>)
WHERE ROWNUM = 1
Eventuellement tu mets tout ça dans du code SQL pour garder les valeurs dans des variables dans ce cas tu passes par un CURSOR et tu fais juste un FETCH. Une question similaire a été posté récemment, tu peux faire une recherche dans le forum
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 10h32   #3
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
J'ai fait des recherches mais ce n'est pas ce que je voudrais, je me suis peut-être mal exprimé.
Je voudrais par exemple copier le 1er enregistrement dans une table vide car lors de l'exécution du programme, il se peut que le 1er enregistrement ne soit plus le même au début qu’à la fin du script. Il faudrait donc en quelque sorte isoler le 1er enregistrement au début de mon programme et ne plus chercher les informations dans la table générique mais dans un endroit où il n'y aura que cet enregistrement.
Le problème est que je ne peux pas créer une nouvelle table.
Si je ne suis toujours pas claire, demandez moi d'avantage d'explications.
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 11h03   #4
Membre du Club
 
Inscription : décembre 2010
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 190
Points : 60
Points : 60
bonjour,

Je te conseille de créer un curseur sur ta table :

Code :
1
2
3
Cursor Cur IS 
SELECT * FROM TABLE
GROUP BY tacolonne;
Et à la lecture de ce curseur, tu identifies ton 1er enregistrement par une variable et tu pourras le copier dans une autre table.

Code :
1
2
3
4
5
var := 0;
FOR v_cur IN CUR loop
IF var = 0 then INSERT INTO TABLE 2 v_cur.ta_ligne; end IF;
var := var + 1;
end loop;
AbouZaid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h06   #5
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Ce n'est pas ce que je voudrais. Il faudrait à l'intérieur de mon programme isoler ou protéger un enregistrement pour qu'il garde la 1ère position dans ma table ou encore le mettre dans une autre table "factice" qui ne serait pas visible depuis la base de données qui servirait uniquement pour ce programme.

Un petit exemple pour être plus claire.

Table 1:
colonne1 colonne2 colonne3 colonne4 colonne5
aaa bbb ccc ddd eee
aa bb cc dd ee
a b c d e

Il faudrait que j'arrive à isoler le 1er enregistrement
colonne1 colonne2 colonne3 colonne4 colonne5
aaa bbb ccc ddd eee

Pour que lorsque d'autre données arriveront dans cette table, cet enregistrement reste à la même place.
Avec un ROWNUM = 1, si ma table bouge, je n'obtiendrai pas les données du même enregistrement.
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h26   #6
Modérateur
 
Avatar de Golgotha
 
Homme cédric
Développeur informatique
Inscription : août 2007
Messages : 732
Détails du profil
Informations personnelles :
Nom : Homme cédric
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 732
Points : 1 566
Points : 1 566
Envoyer un message via Skype™ à Golgotha
Je pense que tu as répondu as ta question...

Quand tu sélectionne ta ligne, tu sauvegarde l'id de celui ci dans ton programme ou dans un autre table, quand tu veux le retrouver tu ne refait pas ton select mais tu va le piocher directement avec son id.

Il n'y a pas de solution miracle..
__________________
modérateur webmasters - développements web & php
faq jQuery - règles du forum - faqs web
mon espace perso
Venez participez au deuxième defi Web !
Golgotha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h56   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par hidiho Voir le message
...Il faudrait a l'intérieur de mon programme isoler ou protéger un enregistrement pour qu'il garde la 1er position dans ma table ...
1er position par rapport à quoi ?
Une table c'est comme une corbeille. Vous mettez 3 bille identiques dedans vous n'avez aucun moyen de savoir ensuite laquelle a été la première.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h09   #8
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
Je voulais dire par la le même qu'avant.
J'ai émis des solutions sans savoir si elles étaient réalisables.
Quel est la commande pour enregistrer l'id d'un enregistrement dans le programme?
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h13   #9
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

Au cas où tu penses à un id créé en interne par Oracle, il ne faut pas l'utiliser...

Si tu veux être sûr de traiter la même chose, il te faut un identifiant que tu gères.

Par exemple, quand je traite un client, j'ai un numéro de client que j'enregistre comme un grand dans une variable.

Quand c'est un compte, un numéro de compte...

Connais-tu le concept de clef primaire ?
C'est un élément important quand on travaille en base de données...
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h21   #10
Candidat au titre de Membre du Club
 
Femme
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 33
Points : 11
Points : 11
C'est fou comme les choses peuvent devenir compliquées alors qu’elles sont simples lorsqu'on ne pense pas aux choses basiques.
Merci à tous !!
hidiho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 15h16   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par hidiho Voir le message
Ce n'est pas ce que je voudrais. Il faudrait à l'intérieur de mon programme isoler ou protéger un enregistrement pour qu'il garde la 1ère position dans ma table ou encore le mettre dans une autre table "factice" qui ne serait pas visible depuis la base de données qui servirait uniquement pour ce programme.
Je tiens à clarifier quelque chose : quand tu ouvres un curseur, tu gardes les résultats en mémoire, même si quelqu'un modifie la ligne, tu ne verras pas ces modifs tant que tu ne relances pas le SELECT. Donc, rien n'interdit de mettre l'ID dans une variable et utiliser cet ID plus tard.
orafrance 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 17h12.


 
 
 
 
Partenaires

Hébergement Web