Выполнить сценарий Oracle из Visual Studio - PullRequest
3 голосов
/ 21 февраля 2012

Итак, я хотел бы выполнить сценарий оракула plsql из Visual Studio. Я установил Oracle Oracle Visual Studio Tools и открыл новое окно запросов в VS2010, подключенное к экземпляру oracle db. Вот пример сценария, который я пытаюсь запустить:

DECLARE
BEGIN
DBMS_OUTPUT.put_line ('Hello World!'); --tried various types of statements here
END;

и что бы я ни пытался вставить в тело блока начала / конца, я получаю следующее:

ERROR
ORA-06550: line 4, column 3:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ; <an identifier> <a double-quoted delimited-identifier>
The symbol ";" was substituted for "end-of-file" to continue.

У меня не возникает та же проблема при запуске из других инструментов, таких как sql developer или toad. Что дает?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Убедитесь, что вы добавили символ новой строки после END;, т.е. номер строки.4 должно не быть последним:

DECLARE
BEGIN
    DBMS_OUTPUT.put_line ('Hello World!'); --tried various types of statements here
END; -- press Enter here

Клиент данных Oracle (Oracle.DataAccess.Client) действительно требователен к этому.

Обновление: Как я и подозревал, проблема была связана с окончанием строки.Оказывается, что Oracle не принимает символы \r (0x0d) в блоках сценариев PL / SQL (но, похоже, игнорирует их при обработке обычного SQL), однако в окне запросов используются стандартные окончания строк Windows \r\n (0x0d 0x0a), и это именно то, что вызывает проблему.

Я использовал Wireshark , чтобы увидеть, что передается по проводам, когда я нажимаю кнопку Execute Query на панели инструментов и когда выбираю Menu -> Tools -> Execute SQL *Plus Scriptпункт меню.Результат странный, но предсказуемый: Execute Query отправляет текст запроса как есть (и я получил PLS-00103), в то время как Execute SQL * Plus Script делает перевод \r\n в\n (Команда (и) успешно выполнена).

Так что, похоже, у вас есть следующие опции:

  1. Выполните блоки вашего скрипта через Меню -> Инструменты -> ВыполнитьSQL * Plus Script
  2. Сохраните сценарий на диске с помощью любого редактора, способного использовать окончания строк в стиле Unix, , а затем откройте его из окна запроса (он сохраняет окончания строк в существующих файлов, я проверил)
  3. Используйте что-то более интеллектуальное, чем Oracle Developer Tools для Visual Studio (я сам предпочитаю эту опцию)

Надеюсь, это поможет.

1 голос
/ 21 февраля 2012

Declare должен иметь идентификатор / переменную, так как у вас его нет, удалите оператор Declare.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...