Убедитесь, что вы добавили символ новой строки после 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
(Команда (и) успешно выполнена).
Так что, похоже, у вас есть следующие опции:
- Выполните блоки вашего скрипта через Меню -> Инструменты -> ВыполнитьSQL * Plus Script
- Сохраните сценарий на диске с помощью любого редактора, способного использовать окончания строк в стиле Unix, , а затем откройте его из окна запроса (он сохраняет окончания строк в существующих файлов, я проверил)
- Используйте что-то более интеллектуальное, чем Oracle Developer Tools для Visual Studio (я сам предпочитаю эту опцию)
Надеюсь, это поможет.