Сначала создайте скрипт для запуска запроса. Вы захотите сохранить вывод в файл, отсюда и команда SPOOL.
connect usr/pswd@db1
spool c:\temp`get_sums.lst
SELECT
COLUMN1 AS "LAST NAME",
COLUMN2 AS "FIRST NAME",
COLUMN3 AS "LOCATION"
FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010'))
/
spool off
exit;
сохранить это в файл с именем get_sums.sql. Затем вам нужен командный файл get_sums.bat, например:
sqlplus /nolog @C:\get_sums.sql
Существуют различные команды SQL * Plus, которые можно включить в файл .sql для форматирования вывода. Узнайте больше .
Очевидно, что ссылка на документацию по форматированию недостаточна.
Нет смысла устанавливать LINESiZE на 80, это значение по умолчанию. Если вы выбираете девять столбцов и хотите, чтобы все девять значений отображались в одной строке, вам нужно установить LINESIZE так, чтобы он был достаточно длинным, чтобы вместить все столбцы. Это означает, что вам нужно установить LINESIZE на сумму ширины всех столбцов плюс восемь (количество промежуточных пробелов между столбцами ninbe).
Хотя я вижу, вы пытались
SET SPACE 0
Это приводит к тому, что все выбранные столбцы объединяются в одну длинную строку, что является весьма необычным способом составления отчета. Но если это действительно то, что вам нужно, тогда игнорируйте промежуточные пробелы при расчете правильного значения для LINESIZE.
Отформатировав опубликованный вами код, я вижу, что вы выводите на .csv
. Почему вы не сказали, что хотите экспортировать значения, разделенные запятыми?
Есть несколько способов сделать это. Самое простое - объединить проекцию запроса с запятыми:
SELECT
'"'||COLUMN1
||'","'|| COLUMN2
||'","'|| COLUMN3
||'","'|| COLUMN4
||'","'|| COLUMN5
||'","'|| COLUMN6
||'","'|| COLUMN7
||'","'|| COLUMN8
||'","'|| COLUMN9 ||'"'
FROM TABLE(ACTY_SUMM('09-NOV-2010','12-NOV-2010'))
/
Двойные кавычки являются необязательными ограничителями поля, которые будут обрабатывать любые строковые столбцы, содержащие запятые.
«Мне не нужны значения, разделенные комой.
отредактировал мой пост. Пожалуйста, предложите "
Вот некоторые тестовые данные:
SQL> select * from t23
2 /
♀FIRSTNAME LASTNAME LOCATION A B C D E F
-------------------- -------------------- ---------- -- -- -- -- -- --
G H I
-- -- --
NAME1 LNAME1 LOC1 A1 B1 C1 D1 E1 F1
G1 H1 I1
NAME2 LNAME2 LOC1 A2 B2 C2 D2 E2 F2
G2 H2 I2
NAME3 LNAME3 LOC2 A3 B3 C3 D3 E3 F3
G3 H3 I3
SQL>
Я могу создать базовый макет, который вы хотите, используя команды форматирования SQL * Plus
SQL> set linesize 100
SQL> break on location
SQL> compute count of location on location
SQL> compute count of location on report
SQL> r
1* select * from t23
♀FIRSTNAME LASTNAME LOCATION A B C D E F G H I
-------------------- -------------------- ---------- -- -- -- -- -- -- -- -- --
NAME1 LNAME1 LOC1 A1 B1 C1 D1 E1 F1 G1 H1 I1
NAME2 LNAME2 A2 B2 C2 D2 E2 F2 G2 H2 I2
----------
2
NAME3 LNAME3 LOC2 A3 B3 C3 D3 E3 F3 G3 H3 I3
----------
1
SQL>