как изменить разделитель в sqlplus в oracle 11g


Я хочу изменить разделитель:

Может кто-нибудь помочь мне изменить разделитель в sqlplus в Oracle 11g

CREATE OR REPLACE TRIGGER test_trigger 
BEFORE INSERT ON test 
REFERENCING NEW AS NEW FOR EACH ROW 
BEGIN 
SELECT test_sequence.nextval INTO :NEW.ID FROM dual; 
END; 
/ 
Это триггер, который я хочу создать. но после утверждения Select он останавливается из-за ; Есть. вот почему я хочу изменить разделитель. Я надеюсь, что теперь все это понимают..
4 2

4 ответа:

Нет ничего плохого в синтаксисе вашего триггера. Я могу запустить его в моей (vanilla) среде SQL * Plus:

SQL> CREATE OR REPLACE TRIGGER test_trigger
  2  BEFORE INSERT ON test
  3  REFERENCING NEW AS NEW FOR EACH ROW
  4  BEGIN
  5  SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
  6  END;
  7  /

Trigger created.

SQL>

И вот! срабатывает триггер:

SQL> insert into test (col1) values ('Simples!')
  2  /

1 row created.

SQL> select * from test
  2  /

        ID COL1
---------- ------------
         1 Simples!

SQL>
Все, что я могу думать, это то, что у вас есть несколько пустых строк в коде, который вы набираете. В этом случае вы можете переопределить поведение по умолчанию с помощью следующей команды SQL * Plus:
SQL>  set sqlblanklines on

Это то, что вы ищете

select q'#Oracle's quote operator#' from dual;

Q'#ORACLE'SQUOTEOPERATO
-----------------------
Oracle's quote operator

Править 1:

CMDS[EP] {;|c|OFF|ON}

   Change or enable command separator - default is a semicolon (;)

Если вы используете SQLPlus, а не какой-то другой инструмент, я не уверен, в чем корень проблемы, но вот ответ на ваш обходной вопрос:
Чтобы изменить разделитель команд от значения по умолчанию ;, Используйте

SQL> set cmdsep /
SQL> show cmdsep
cmdsep "/" (hex 2f)

Чтобы восстановить значение по умолчанию после создания триггера:

SQL> set cmds off
SQL> show cmds
cmdsep OFF
SQL> set sqlt /

Настройки SQL Терминатор '/'

SQL> show sqlt

Для проверки текущего sqlterminator