Самый легкий путь к , устанавливает фокус где-нибудь .
можно сразу задержать фокус, но установка фокуса где угодно инициирует LostFocus-событие на любой тип управления и заставит его обновить свой материал:
IInputElement x = System.Windows.Input.Keyboard.FocusedElement;
DummyField.Focus();
x.Focus();
Иначе должен был бы получить сфокусированный элемент, получить обязательный элемент от сфокусированного элемента и инициировать обновление вручную. Пример для TextBox и ComboBox (необходимо было бы добавить любое управление, вводит Вас, должен поддерживать):
TextBox t = Keyboard.FocusedElement as TextBox;
if ((t != null) && (t.GetBindingExpression(TextBox.TextProperty) != null))
t.GetBindingExpression(TextBox.TextProperty).UpdateSource();
ComboBox c = Keyboard.FocusedElement as ComboBox;
if ((c != null) && (c.GetBindingExpression(ComboBox.TextProperty) != null))
c.GetBindingExpression(ComboBox.TextProperty).UpdateSource();
Большим преимуществом внешних таблиц является то, что мы можем запрашивать их изнутри базы данных с помощью SQL. Таким образом, мы можем просто запускать проверки валидации как операторы SELECT без необходимости в таблице хранения. Точно так же, если нам нужно выполнить некоторые манипуляции с загруженными данными, это почти всегда проще сделать с помощью SQL, а не команд SQLLDR. Мы также можем управлять загрузкой данных с помощью процедур DBMS_JOB / DBMS_SCHEDULER, что еще больше сокращает потребность в сценариях оболочки и заданиях cron.
Однако, если у вас уже есть зрелый и стабильный процесс, использующий SQLLDR, то я признаю, что вы вряд ли это поймете огромные преимущества от переноса на внешние таблицы.
В некоторых случаях - особенно если вы загружаете миллионы строк - подход SQLLDR может быть значительно быстрее. Однако разница не будет так заметна в более поздних версиях базы данных. Я полностью ожидаю, что SQLLDR в конечном итоге будет устаревшим в пользу внешних таблиц.
Если у вас уже есть зрелый и стабильный процесс, использующий SQLLDR, я признаю, что вы вряд ли ощутите огромные преимущества от переноса на внешние таблицы.В некоторых случаях - особенно если вы загружаете миллионы строк - подход SQLLDR может быть значительно быстрее. Однако разница не будет так заметна в более поздних версиях базы данных. Я полностью ожидаю, что SQLLDR в конечном итоге будет устаревшим в пользу внешних таблиц.
Если у вас уже есть зрелый и стабильный процесс, использующий SQLLDR, я признаю, что вы вряд ли ощутите огромные преимущества от переноса на внешние таблицы.В некоторых случаях - особенно если вы загружаете миллионы строк - подход SQLLDR может быть значительно быстрее. Однако разница не будет так заметна в более поздних версиях базы данных. Я полностью ожидаю, что SQLLDR в конечном итоге будет устаревшим в пользу внешних таблиц.
Если вы посмотрите на синтаксис внешней таблицы, он подозрительно похож на синтаксис управляющего файла SQL * Loader: -)
Если ваша внешняя таблица будет многократно использоваться в нескольких запросах, это может быстрее загружать таблицу (как вы это делаете сейчас), а не повторно сканировать внешнюю таблицу для каждого запроса. Как отмечает @APC, Oracle вносит в них улучшения, поэтому в зависимости от версии вашей БД YMMV.
I would use external tables for their flexibility.
It's easier to modify the data source on them to be a different file alter table ... location ('my_file.txt1','myfile.txt2')
You can do multitable inserts, merges, run it through a pipelined function etc...
Parallel query is easier ...
It also establishes dependencies better ...
The code is stored in the database so it's automatically backed up ...