как изменить разделитель в sqlplus в oracle 11g - PullRequest
3 голосов
/ 09 июня 2010

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

Может кто-нибудь помочь мне изменить разделитель в 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 ]

3 голосов
/ 09 июня 2010

Нет ничего плохого в синтаксисе вашего триггера.Я могу запустить его в своей (ванильной) среде 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
1 голос
/ 09 июня 2010

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

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

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

SQL> set cmds off
SQL> show cmds
cmdsep OFF
1 голос
/ 09 июня 2010

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

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 (;)
0 голосов
/ 20 декабря 2014
SQL> set sqlt /

чтобы установить терминатор sql на '/'

SQL> show sqlt

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

...