全部插入

在选择之前,下面的内容与换行符之间是否存在区别


INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMber','STREAM',1,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMber','BNUMber',2,'Description',3,9,0)

SELECT * FROM dual;

并且在选择前没有新行


INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMber',0)
SELECT * FROM dual;

我注意到第一个没有在表中插入任何内容,并且在日志中显示为

D
-
X

第二个没有换行符的块在日志中显示为 已创建3行。

全部插入

++日志

SQL> desc LOOKUPTABLE_TYPE;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 LOOKUPTABLE_NAME                          NOT NULL VARCHAR2(32)
 COLUMN_NAME                               NOT NULL VARCHAR2(32)
 COLUMN_ORDER                              NOT NULL NUMber(2)
 COLUMN_TYPE                               NOT NULL NUMber(1)
 COLUMN_MODE                               NOT NULL NUMber(1)

SQL> INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMber',0)

SELECT * FROM dual;  2    3    4    5  SQL> 

D
-
X

SQL> commit
  2  ;

Commit complete.

SQL> select * from LOOKUPTABLE_TYPE where LOOKUPTABLE_NAME='LT_EMERGENCY_NUMber';

no rows selected

SQL> 
SQL> 
SQL> 
SQL> INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMber',0)
SELECT * FROM dual;  2    3    4    5  

3 rows created.

SQL> select * from LOOKUPTABLE_TYPE where LOOKUPTABLE_NAME='LT_EMERGENCY_NUMber';

LOOKUPTABLE_NAME                 COLUMN_NAME                      COLUMN_ORDER
-------------------------------- -------------------------------- ------------
COLUMN_TYPE COLUMN_MODE
----------- -----------
LT_EMERGENCY_NUMber              BNUMber                                     2
          0           1

LT_EMERGENCY_NUMber              Description                                 3
          9           0

LT_EMERGENCY_NUMber              STREAM                                      1
          0           1

lantianniu 回答:全部插入

没有区别。您可以根据需要添加任意数量的空格(不超过SQL语句的最大大小),而不会影响查询的含义。

CREATE TABLE lookuptable_type (
  a VARCHAR2(50),b VARCHAR2(50),c INT,d INT,e INT
);

然后:

INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','STREAM',1,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','BNUMBER',2,'Description',3,9,0)

SELECT * FROM dual;

会给:

3 rows affected

和:

INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER',0)
SELECT * FROM dual;

还将给出:

3 rows affected

db 提琴here


更新

为什么SQL / Plus显示此内容?

D
-
X

SQL / Plus的默认行为是不接受SQL语句中的空行,并假定这将终止该语句(SQL/Plus documentationrelevant dba.stackechange question)。要更改此行为以允许空白行,您需要包含以下指令:

set sqlblanklines on

当SQL / Plus用空白行解析该语句时,它将把它分成两个语句:

INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER',0)

SELECT * FROM dual;

第一个是无效的语法,第二个是有效的语句,SQL / Plus将对其进行处理并显示查询的输出。

如果启用空白行,则它将处理完整的语句。

本文链接:https://www.f2er.com/2765708.html

大家都在问