Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ile rekordów w kazdej tabeli
vander1989
post 4.03.2010, 19:31:32
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Witam !
Mam za zadanie wypisac ile w każdej tabeli jaką mam jest rekordów. i mam pytanie czym to było by najlepiej zrobic Kursorem czy procedura?
selectami ok select count(*) from tabela ale jak to zrobic zeby wszystkie tabele były zliczone?
I jeszcze jedno jak mozna wypisac nazwę tabeli? jest ona gdzies przechowywana?
Go to the top of the page
+Quote Post
Method
post 7.03.2010, 11:40:48
Post #2





Grupa: Zarejestrowani
Postów: 177
Pomógł: 6
Dołączył: 14.01.2003
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


zakladajac ze jest po czym zlaczyc te tabelę to znajac zycie i tak Ci wyjdzie iloczyn kartezjański.
poczytaj o dba views tacy co mieli ten sam problem rozwiazywali to tak http://www.arikaplan.com/oracle/ari72997.html


--------------------
"zycia nie mierzy sie liczba oddechow,
ale liczba chwil, ktore zapieraja dech w piersi"
Go to the top of the page
+Quote Post
IP!
post 3.04.2010, 20:50:27
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 21.10.2008

Ostrzeżenie: (0%)
-----


Pytanie równie banalne, co skomplikowane. Co to jest każda tabela jaką mam? Należy do Twojego schematu? Proponuję zapytać user_tables. Każda tabela do której masz dostęp? Zapytaj all_tables. Procedura? Można, ale prościej będzie blokiem anonimowym. Kursor a procedura - to nie substytuty. Proponuję poniższe rozwiązanie:

  1. DROP TABLE t1;
  2. DROP TABLE t2;
  3. DROP TABLE t3;
  4. DROP TABLE t4;
  5. DROP TABLE t5;
  6. DROP TABLE t6;
  7.  
  8. CREATE TABLE t1 (a CHAR(10));
  9. CREATE TABLE t2 (a NCHAR(10));
  10. CREATE TABLE t3 (a VARCHAR2(10));
  11. CREATE TABLE t4 (a NVARCHAR2(10));
  12. CREATE TABLE t5 (a CHAR(10));
  13. CREATE TABLE t6 (a CHAR(10));
  14.  
  15. BEGIN
  16. FOR i IN 1..5 LOOP
  17. FOR j IN 1..100 LOOP
  18. EXECUTE IMMEDIATE 'INSERT INTO t' || i || ' SELECT DBMS_RANDOM.STRING(''l'', 10) FROM dual';
  19. END LOOP;
  20. COMMIT;
  21. END LOOP;
  22.  
  23. FOR j IN 1..50 LOOP
  24. EXECUTE IMMEDIATE 'INSERT INTO t6(a) VALUES ((SELECT DBMS_RANDOM.STRING(''l'', 10) FROM dual))';
  25. END LOOP;
  26. COMMIT;
  27. END;
  28. /
  29.  
  30. DECLARE
  31. c NUMBER;
  32. stat VARCHAR2(1000);
  33. BEGIN
  34. FOR i IN (SELECT table_name FROM user_tables ORDER BY 1) LOOP
  35. stat := 'SELECT COUNT(*) FROM ' || i.table_name;
  36. EXECUTE IMMEDIATE stat INTO c;
  37. DBMS_OUTPUT.PUT_LINE(i.table_name || ': ' || c);
  38. END LOOP;
  39. END;
  40. /
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 05:48