【问题标题】:Why doesn't ORACLE allow consecutive newline characters in commands?为什么 ORACLE 不允许在命令中使用连续的换行符?
【发布时间】:2009-04-28 03:17:21
【问题描述】:

我写:

CREATE TABLE Person ( 
name CHAR(10),

ssn INTEGER);

并将其保存到文件“a.sql”中。

如果我在 SQL*Plus 命令提示符中键入“@a”来运行它,它会告诉我以“ssn”开头的行未被识别为命令,并被忽略。

据我所知,如果 sqlplus 连续遇到多个换行符,它似乎会终止命令。这是一个准确的说法吗?如果是这样,有谁知道这是否有必要/为什么选择这样做?

【问题讨论】:

    标签: sql oracle language-design whitespace sqlplus


    【解决方案1】:

    我不知道为什么,但是一个完全空白的行会终止 SQL*Plus 中的命令。

    引用the SQL*Plus docs

    结束 SQL 命令: 您可以通过以下三种方式之一结束 SQL 命令:

    • 带有分号 (;)
    • 在一行上单独带有一个斜杠 (/)
    • 有一个空行

    您还可以使用 SET SQLBLANKLINES 更改处理空行的方式

    SQLBL[ANKLINES] {ON|OFF}

    控制 SQL*Plus 是否允许在 SQL 命令或脚本中使用空行。 ON 将空行和新行解释为 SQL 命令或脚本的一部分。 OFF,默认值,不允许在 SQL 命令或脚本或脚本中出现空行或新行。

    输入 BLOCKTERMINATOR 以停止 SQL 命令条目而不运行 SQL 命令。输入 SQLTERMINATOR 字符以停止 SQL 命令输入并运行 SQL 语句。

    【讨论】:

      【解决方案2】:

      默认情况下,当输入空行时,SQLPlus 会终止(但不执行)语句。它一直这样做。在屏幕编辑器和查询工具出现之前,这似乎是个好主意。

      你可以改变默认行为

      设置 SQLBLANKLINES

      在这种情况下,您必须输入只有句号的行才能终止(但不执行)语句。

      【讨论】:

        【解决方案3】:

        但如果您想在 varchar2 或 clob 字段中插入多行文本,您可以使用 chr(10)

         insert into t values ('Hello,'||chr(10)||chr(10)||' How are you?');
        
         insert into t values (
         'Hello,
        
         How are you');   
        

        由于上述原因无法工作。

        【讨论】:

          猜你喜欢
          • 2016-06-09
          • 1970-01-01
          • 1970-01-01
          • 2015-11-05
          • 2013-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-12
          相关资源
          最近更新 更多