Обработка типа Long

Angellore
Дата: 05.12.2007 11:42:31
Добрый день! Я делаю импорт данных в таблицу. При этом есть одно условие. Если пользователь импортирует файл, в котором какое либо поле пусто, то необходимо заменить значение этого поля на значение по умолчанию из таблицы.

Вот запрос, который дает значения по умолчанию:
select column_name, data_default from user_tab_cols
where table_name = :table_name -- произвольное имя таблицы, которое есть в базе данных

Но! столбец data_default имеет тип Long. Датасет начитывется нормально, но проблема возникает тогда, когда имеем дело с полями, тип которых дата.

Для таких полей в столбце data_default отображается, например to_date('12.12.1999', 'dd.mm.yyyy')
Подскажите пожалуйста, как начитать датасет, чтобы отображалось не тудейт, а уже отформатированная дата.
Есть вариант обрезания текста, но я его рассматриваю как самый последний.
Спасибо
dmidek
Дата: 05.12.2007 11:54:19
Angellore

Для таких полей в столбце data_default отображается, например to_date('12.12.1999', 'dd.mm.yyyy')


И очень хорошо делается :-)

Angellore

Подскажите пожалуйста, как начитать датасет, чтобы отображалось не тудейт, а уже отформатированная дата.
Есть вариант обрезания текста, но я его рассматриваю как самый последний.
Спасибо


Дата не может быть отформатированной. Не понимаю, что Вы хотите резать ?
Вам предоставлен Ораклом совершенно правильный вариант
Angellore
Дата: 05.12.2007 11:58:59
Да, конечно правильный вариант. Но я хочу чтобы в датасет начитывалась сама дата, а не то значение во вьюхе, как это сделать?
Mikst
Дата: 05.12.2007 12:21:41
Angellore
Да, конечно правильный вариант. Но я хочу чтобы в датасет начитывалась сама дата, а не то значение во вьюхе, как это сделать?


брать то что лежит в этом поле и через DSQL выбирать из дуала.
Поясню: в этом поле лежит СТРОКА которую указали при создании таблицы. а там можно было указаить и to_Date и sysdate и еще 1000+1 вариант.
Angellore
Дата: 05.12.2007 12:25:20
Пожалуйста, покажите пример запроса, потому что
select column_name, (select data_default from dual) as lalala from user_tab_cols
не конает
Mikst
Дата: 05.12.2007 12:26:54
пример:

SQL> create table tmp(a date default 1+/*todo*/ to_date('02.03.'||to_char(sysdate-100,'YYYY'),'DD.MM
.YYYY') not null);

Таблица создана.

SQL> 
SQL> select data_default from dba_tab_cols where table_name = 'TMP';

DATA_DEFAULT
--------------------------------------------------------------------------------
1+/*todo*/ to_date('02.03.'||to_char(sysdate-100,'YYYY'),'DD.MM.YYYY')

SQL> 
Mikst
Дата: 05.12.2007 12:27:56
Angellore
Пожалуйста, покажите пример запроса, потому что
select column_name, (select data_default from dual) as lalala from user_tab_cols
не конает


я же сказал, нужно использовать динамический SQL.
execute immediate ...
Angellore
Дата: 05.12.2007 12:33:24
Извините пожалуйста за тупость, но я не могу понять к чему нужно применять execute immediate
Покажите пожалуйста
Angellore
Дата: 05.12.2007 12:44:56
select column_name, 
(begin
execute immediate ('select data_default from dual')
end)
as lalala 
from user_tab_cols
where table_name = 'STHBI'
Angellore
Дата: 05.12.2007 12:45:15
Так тоже не хочет.