Oracle
 sql >> база данни >  >> RDS >> Oracle

процедура на oracle за изброяване на имена на таблици и съответния брой

Не съм сигурен какво е точното изискване тук, но можете да използвате следния подход, за да извлечете броя на записите от всяка таблица.

SQL> -- This is sample data
SQL> WITH SAMPLE_DATA(TNAME) AS
  2  (SELECT 'CUSTOMERS' FROM DUAL UNION ALL
  3  SELECT 'INTERVAL_TAB' FROM DUAL)
  4  -- Your query starts from here
  5  SELECT TABLE_NAME,
  6         TO_NUMBER(
  7         EXTRACTVALUE( XMLTYPE(
  8         DBMS_XMLGEN.GETXML('select count(*) c from ' || U.TABLE_NAME)
  9         ), '/ROWSET/ROW/C')) COUNT
 10    FROM USER_TABLES U JOIN SAMPLE_DATA S ON S.TNAME = U.TABLE_NAME;

TABLE_NAME           COUNT
--------------- ----------
CUSTOMERS                1
INTERVAL_TAB             0

SQL>

- Актуализиране

Можете да генерирате изгледа, както следва:

-- АКТУАЛИЗИРАХ ТОЗИ РАЗДЕЛ

CREATE OR REPLACE VIEW V_CHECK_RECORDS_AUS AS
SELECT TABLE_NAME,
       TO_NUMBER(
           EXTRACTVALUE( XMLTYPE(
                   DBMS_XMLGEN.GETXML('select count(*) c from ' 
                      || U.TABLE_NAME || ' WHERE oe_name=''BUL''')
               ), '/ROWSET/ROW/C')) NUM_ROWS
  FROM USER_TAB_COLUMNS U JOIN GD_TABLE_ORDER S ON S.TABLE_NAME_AUS = U.TABLE_NAME 
 WHERE U.COLUMN_NAME = 'OE_NAME';

По същия начин можете да генерирате други изгледи.

- Допълнителна актуализация

CREATE OR REPLACE VIEW V_CHECK_RECORDS_AUS AS
SELECT TABLE_NAME,
       CASE WHEN U.COLUMN_NAME IS NOT NULL THEN TO_NUMBER(
           EXTRACTVALUE( XMLTYPE(
                   DBMS_XMLGEN.GETXML('select count(*) c from ' 
                      || U.TABLE_NAME || ' WHERE ' || U.COLUMN_NAME || '=''BUL''')
               ), '/ROWSET/ROW/C')) 
         ELSE 0 END NUM_ROWS
  FROM GD_TABLE_ORDER S LEFT JOIN USER_TAB_COLUMNS U 
  ON S.TABLE_NAME_AUS = U.TABLE_NAME AND U.COLUMN_NAME = 'OE_NAME';



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте функция за връщане на текущата дата и час в Oracle

  2. PL/SQL процедура - твърде много стойности

  3. получаване на правилен формат на датата от резултатите от SQL търсене (datetime.datetime)

  4. Миграция на данни между различни СУБД

  5. Достъп до таблица без посочване на името на схемата