J'ai besoin de savoir combien d'enregistrements ont été retournés dans un Select à Oracle. Actuellement, je fais deux questions:
SELECT * FROM MY_ITEMS
4 Réponses :
Y a-t-il un moyen de faire: p>
SELECT i.*, COUNT(*) OVER () FROM my_items i
Si vous voulez le faire au niveau de la base de données, je suis d'accord avec la deuxième suggestion. Vous pouvez voir un exemple ici: télécharger.oracle .Com / Docs / CD / B28359_01 / Server.111 / B28286 / ...
La performance sage, je pense que cela devrait être la meilleure solution. Merci.
Et si je dois mettre la clause à l'intérieur de dessus (), par exemple, sélectionnez i. *, comptez (*) sur (où prod = 6) de my_items i
@ user1512999: veuillez le poster comme une question distincte.
Essa É UMA DAS COISAS MAIS LINDAS QUE EU JÁ VI! Não Sei Porque A Resposta Não Foi Aceita!
Je ne sais pas simplement les alias de table, je ne me souviens pas à Oracle si elles ont besoin de «comme» ou non. Mais cela devrait fonctionner.
select mt.*, c.Cntr
from MyTable mt
, (select COUNT(*) as Cntr
from MyTable
) c
L'OP a spécifiquement demandé une méthode qui ne nécessiterait pas deux requêtes; Muant les deux requêtes en une seule, qui fait toujours exactement la même quantité de travail extra-inutile, n'est pas une bonne réponse, IMHO.
Si vous travaillez dans PL / SQL, vous pouvez utiliser la pseudo-variable SQL% RowCount pour obtenir le nombre de lignes concernées par la dernière instruction SQL. Pourrait vous faire économiser des efforts. p>
Comment évaluer / obtenir cette valeur variable?
Un exemple serait utile.
Cela devrait faire le tour.
WITH
base AS
(
SELECT *
FROM MY_ITEMS
)
SELECT (SELECT COUNT(*) FROM base) kount,
base.*
FROM base