我想更改分隔符:
有人可以帮我改变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语句之后因为;在那儿。这就是我想要更改分隔符的原因。我希望大家现在就明白这个想法。
答案 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