【问题标题】:how to change the delimiter in sqlplus in oracle 11goracle 11g中如何更改sqlplus中的分隔符
【发布时间】:2011-03-01 15:01:28
【问题描述】:

我要更改分隔符:

有人可以帮我更改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 语句之后它会因为 ; 而停止有没有。这就是为什么我要更改分隔符。我希望每个人现在都明白这一点..

【问题讨论】:

  • 什么分隔符?陈述?柱子?字符串?
  • 检查我所做的编辑。我觉得对你有帮助

标签: oracle triggers sqlplus


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是你要找的吗

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

    【讨论】:

    • 当我们写一个 sql 或者我们放的任何东西时;结束行。所以在触发器中我无法正确触发,因为当我按下它时它会结束该行。不能输入最后两行。那就是我想更改分隔符。有人可以帮我吗
    • @NubKadyia,您能否编辑您的问题以将此信息与有问题的触发代码一起放入以便我们提供帮助?
    • @Nubkadiya,我建议您准确地剪切并粘贴您在 SQLPlus 中输入的内容以及您获得的输出。我不清楚为什么分号会给你带来麻烦。
    • 在插入测试之前创建或替换触发器 test_trigger 引用新的为每行开始 SELECT test_sequence.nextval INTO :NEW.ID FROM dual;结尾; / 这是我要创建的触发器。但是在 Select 语句之后它会因为 ; 而停止有没有。那就是我想更改分隔符。我希望每个人现在都对此有所了解..
    • @任何有足够代表的人将最后一条评论放在原始问题中?
    【解决方案3】:

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

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

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

    SQL> set cmds off
    SQL> show cmds
    cmdsep OFF
    

    【讨论】:

      【解决方案4】:
      SQL> set sqlt /
      

      将 sql 终止符设置为 '/'

      SQL> show sqlt
      

      检查当前的 sqlterminator

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 2014-11-15
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        • 2015-01-23
        相关资源
        最近更新 更多