Я запускаю скрипт в Toad для 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 как при «Выполнении как сценария», так и при «Выполнении инструкции». Однако sum(paid_amt) возвращается как VARCHAR2, когда я «Выполняю как сценарий», и как ЧИСЛО, когда я «Выполняю оператор». Я ожидал, что sum(paid_amt) всегда будет возвращаться с типом данных NUMBER.
SALARY
, попробуйте поместить его в строку перед запросомCOLUMN SALARY FORMAT $99,990.00
и посмотрите, изменит ли он вывод. - person MT0   schedule 12.10.2017