如何在oracle 11g中更改sqlplus中的分隔符

时间:2010-06-09 11:29:47

标签: oracle triggers sqlplus

我想更改分隔符:

有人可以帮我改变Oracle 11g中sqlplus中的分隔符

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 个答案:

答案 0 :(得分:3)

触发器的语法没有任何问题。我可以在我的(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

答案 1 :(得分:1)

这是你在寻找

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 (;)

答案 2 :(得分:1)

如果您使用的是SQLPlus而不是其他工具,我不确定根本问题是什么,但这是您的解决方法问题的答案:
要从默认值;使用

更改命令分隔符
SQL> set cmdsep /
SQL> show cmdsep
cmdsep "/" (hex 2f)

在创建触发器后恢复默认值:

SQL> set cmds off
SQL> show cmds
cmdsep OFF

答案 3 :(得分:0)

SQL> set sqlt /

将sql终止符设置为'/'

SQL> show sqlt

检查当前的sqlterminator