2010-06-09 75 views
2

我想改变的分隔符:如何改变分隔符在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语句之后,它因为停止;在那儿。这就是为什么我想改变分隔符。我希望现在每个人都明白这一点。

+0

什么分隔符?声明?柱?串? – 2010-06-09 11:44:15

+0

检查我所做的编辑。我认为当我们编写一个sql或我们放入的任何内容时,它对你有帮助 – Bharat 2010-06-09 12:46:41

回答

2

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

这是你正在寻找

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

;结束这条线。所以在触发器中,我无法正确执行触发器,因为当我按下它时,它会结束该行。不能输入最后两行。多数民众赞成我想改变分隔符。有人可以帮我 – Nubkadiya 2010-06-09 12:14:56

+0

@NubKadyia,你可以编辑你的问题,把这个信息以及有问题的触发代码,所以我们帮助? – 2010-06-09 12:31:35

+0

@Nubkadiya,我建议你剪切和粘贴你正在输入的SQLPlus和你得到的输出。我不清楚为什么分号会给你带来麻烦。 – 2010-06-09 12:32:00

1

如果您使用的是SQLPlus而不是其他工具,我不确定根本问题是什么,但以下是解决方法问题的答案:
要的;默认值更改命令分隔符使用

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

要恢复默认值,你已经创建了触发后:

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

到SQL终止符设置为“/ '

SQL> show sqlt 

检查当前sqlterminator