Sybase - Как вывести содержимое переменной в файл - PullRequest
0 голосов
/ 28 ноября 2018

Я пишу процедуру в Sybase с использованием Interactive SQL.Процедура содержит несколько операторов SELECT, которые хранят результаты в переменных, например,

DROP VARIABLE IF EXISTS @totalRows;
CREATE VARIABLE @totalRows LONG VARCHAR;
SELECT COUNT(*) INTO @totalRows FROM <MyTable>;

Я хотел бы иметь возможность выводить результаты этого запроса в файл CSV, но при попытке получить ошибкучтобы выполнить следующий оператор

DROP VARIABLE IF EXISTS @totalRows;
CREATE VARIABLE @totalRows LONG VARCHAR;
SELECT COUNT(*)  INTO @totalRows FROM <MyTable>;
OUTPUT TO 'C:\\temp\\TEST.CSV' FORMAT ASCII DELIMITED BY ';' QUOTE '' WITH COLUMN NAMES;

Ошибка читает

Could not execute statement.  
Syntax error near 'OUTPUT' on line 4.  
SQLCODE=-131, ODBC 3 State="42000".  
Line 1, column 1

Если я удаляю секцию OUTPUT TO запроса, он работает нормально.Возможно ли в Sybase записать содержимое переменной во внешний файл таким образом?

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

OUTPUT TO - это команда dbisql, то есть директива для клиентской утилиты dbisql.Это не оператор SQL.Если вы попытаетесь выполнить это с чем-то другим, кроме dbisql, вы получите ошибку.Кстати, я полагаю, что предложение OUTPUT должно следовать за точкой с запятой, которая завершает команду SELECT, т. Е. Между ними не должно быть разрыва строки.

0 голосов
/ 06 февраля 2019

Нужно добавить переменную select перед оператором вывода

DROP VARIABLE IF EXISTS @totalRows;
CREATE VARIABLE @totalRows LONG VARCHAR;
SELECT COUNT(*)  INTO @totalRows FROM <MyTable>;
SELECT @totalRows; --select variable before output
OUTPUT TO 'C:\\temp\\TEST.CSV' FORMAT ASCII DELIMITED BY ';' QUOTE '' WITH COLUMN NAMES;
0 голосов
/ 28 ноября 2018

Похоже, предложение 'OUTPUT' не поддерживается Sybase.В качестве обходного пути вы можете запустить этот запрос, используя какой-либо текстовый инструмент (например, sqlite), и перенаправить (>) вывод в файл, если вам случится использовать linux box на стороне клиента.Или вы можете добавить источник данных ODBC (для которого потребуется ODBC-драйвер sybase), соответствующий вашей БД в Windows, и использовать встроенный инструмент MS Excel Microsoft Query (Данные -> Из других источников -> Из Microsoft Query) для экспорта вашего запроса.результат непосредственно в таблицу данных Excel, которую вы можете сохранить как CSV.

...