Je voudrais connaître la différence entre rowID
et rowNUM
Et comment voir les deux dans notre tableau.
quand j'exécute ceci:
SELECT * FROM emp WHERE rownum=1
Il renvoie une requête mais quand je fais la même chose pour rowid, il dit
types de données incohérents: ROWID attendu a obtenu NUMBER
Et même dans certaines tables, rownum renvoie null. Pourquoi
Veuillez clarifier ceci: rowid vs rownum? (Requête de démonstration)
Merci
EDIT: nécessite d'utiliser un alias pour afficher ROWID
et ROWNUM
(car ils sont pseudocolonnes) comme:
SELECT rownum r1, rowid r2 FROM emp
Rownum et rowed sont des pseudo-colonnes.
Rowid
Pour chaque ligne de la base de données, la pseudocolonne ROWID renvoie l'adresse de la ligne.
Un exemple de requête serait:
SELECT ROWID, last_name
FROM employees
WHERE department_id = 20;
Plus d'informations sur rowid ici: https://docs.Oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm
Rownum
Pour chaque ligne renvoyée par une requête, la pseudocolonne ROWNUM renvoie un nombre indiquant l'ordre dans lequel Oracle sélectionne la ligne dans une table ou un ensemble de lignes jointes. La première ligne sélectionnée a un ROWNUM de 1, la seconde a 2, et ainsi de suite.
Vous pouvez limiter la quantité de résultats avec rownum comme ceci:
SELECT * FROM employees WHERE ROWNUM < 10;
Plus d'informations sur rownum ici: https://docs.Oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
Différence
La différence réelle entre rowid
et rownum
est que ce rowid est un identifiant unique permanent pour cette ligne. Cependant, le rownum est temporaire. Si vous modifiez votre requête, le numéro de rownum fera référence à une autre ligne, le rowid non.
Ainsi, le ROWNUM est un nombre consécutif qui ne s'applique qu'à une instruction SQL spécifique. Au contraire, le ROWID, qui est un ID unique pour une ligne.
Rownum (numérique) = Numéro de séquence généré de votre sortie.
Rowid (hexadécimal) = Généré automatiquement au moment de l'insertion de la ligne.
SELECT rowid,rownum fROM EMP
ROWID ROWNUM
----- ----------------------
AAAR4AAAFAAGzg7AAA, 1
AAAR4AAAFAAGzg7AAB, 2
AAAR4AAAFAAGzg7AAC, 3
AAAR4AAAFAAGzg7AAD, 4
AAAR4AAAFAAGzg7AAE, 5