2013-05-20 4 views
0

Посмотрите на запрос ниже. DB: ORACLEОбработать DB для получения данных

select table_name, column_name, data_type from all_tab_cols 
where 
data_type = 'DATE' and 
OWNER = 'OWNER_NAME' 

O/P:

TABLE_NAME COLUMN_NAME DATA_TYPE 
T1   C1   DATE 
T1   C2   DATE 
T2   C3   DATE 
T2   C4   DATE 

Теперь я получил результат отлично. Я хочу создать запрос, который обрабатывается дальше. Из результата about, я хочу, чтобы забрать table_name, column_name и применить фильтр к column_name.

Пример:

TABLE: T1 
C1   c2 
01-01-2001 01-01-2011 
02-02-1990 05-05-1700 
03-03-1753 10-10-1764 

Как мудрой другой таблице ... Проще говоря, я хочу, чтобы все столбцы из БД, где год поля даты меньше, чем конкретный год. Я пробовал, но не мог этого сделать.

+0

не уверен, что вы пытаетесь сделать, но это звучит, как вам нужно [динамический SQL] (HTTP://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm) –

ответ

3

Я получил это ..

Этот запрос делает это ..

select table_name 
     , column_name 
     ,to_number(extractvalue(
     xmltype(dbms_xmlgen.getxml(
     'select count(*) c from '||owner||'.'||table_name ||' WHERE extract(year from ' || column_name || ') < 1753' 
     )) 
     ,'/ROWSET/ROW/C')) as count1 

from all_tab_cols 
where 
data_type = 'DATE' and 
OWNER = 'OWNER_NAME' 
Смежные вопросы