Подозирам, че проблемът е, че вашият клиентски инструмент чете всяка точка и запетая като край на команда, което води до неправилно предаване на PL/SQL кода (който изисква точки и запетая като терминатори на изрази) към сървъра.
Когато премахнете точката и запетая, изразът се изпраща правилно до сървъра, но в крайна сметка получавате невалиден обект, защото PL/SQL е неправилен.
Дублирах вашия проблем на SQL Fiddle. След това променям терминатора на оператора на /
вместо ;
и промени кода, за да използва наклонена черта за изпълнение на всеки оператор и той работи без грешка:
CREATE TABLE proposals (
proposal_id INT NOT NULL,
target_audience VARCHAR2(50) NOT NULL,
line_of_business VARCHAR2(50),
activity_description VARCHAR2(250) NOT NULL,
cost NUMBER(19, 4),
comments VARCHAR2(250),
objectives_and_results VARCHAR2(250),
PRIMARY KEY (proposal_id)
)
/
CREATE SEQUENCE proposals_seq MINVALUE 1
START WITH 1 INCREMENT BY 1 CACHE 10
/
CREATE OR REPLACE TRIGGER proposals_before_insert
BEFORE INSERT ON proposals FOR EACH ROW
BEGIN
select proposals_seq.nextval into :new.proposal_id from dual;
END;
/