Означает ли выполнение в виде сценария, что все мои поля становятся типом данных VARCHAR2?
Я запускаю скрипт в жабе для Oracle. У меня есть два основных варианта запуска скрипта:
Горячая клавиша F9: выполнить оператор
Горячая клавиша F5: выполнить как скрипт
"Execute Statement" вернет мои поля с типом данных, который, как я ожидаю, будет (например, поля NUMBER выводятся как поля NUMBER).
Но "Выполнить как скрипт" возвращает все мои поля с типом данных VARCHAR2. Даже поля, которые определенно имеют тип данных NUMBER, заканчиваются на VARCHAR2. Я могу буквально запустить один и тот же скрипт с помощью F9, а затем F5 и увидеть, что он возвращает разные типы данных.
Итак, мой первый вопрос - ведет себя ли это так, как задумано. И, если это задумано, тогда мой второй вопрос заключается в том, как избежать использования всех моих типов данных VARCHAR2 при использовании "Выполнить как скрипт". Мне нужно использовать "Выполнить как скрипт", потому что я использую переменные связывания.
Редактировать: Например, если бы у меня была такая таблица:
TBL_PAID_DATA
╔══════════╦══════════╗
║ employee ║ paid_amt ║
╠══════════╬══════════╣
║ Sam ║ 1500 ║
║ Sam ║ 200 ║
║ Sam ║ 150 ║
║ Lisa ║ 500 ║
║ Lisa ║ 430 ║
║ Bart ║ 700 ║
║ Donald ║ 840 ║
╚══════════╩══════════╝
И был такой сценарий:
SELECT employee, sum(paid_amt)
FROM TBL_PAID_DATA
GROUP BY employee
Затем поле сотрудника возвращается как VARCHAR2, когда я "Выполнить как сценарий" и "Выполнить инструкцию". Тем не менее, сумма (paid_amt) возвращается как VARCHAR2, когда я "Выполнить как сценарий" и NUMBER, когда я "Выполнить заявление". Я бы ожидал, что сумма (paid_amt) всегда будет возвращаться с типом данных NUMBER.
1 ответ
Я считаю, что это так, потому что F5 выполняется как скрипт, поэтому результат собирается из sqlplus
как текст
Таким образом, решение состоит в том, чтобы скопировать / вставить ваш результат в текстовый файл и использовать инструмент csv-import, такой как Open-office Calc, где вы можете преобразовать свои данные в числовые и выполнить дальнейшие вычисления.