Oracle 全部插入
在选择之前使用换行符是否与下面有区别Oracle 全部插入,oracle,sql-insert,sqlplus,Oracle,Sql Insert,Sqlplus,在选择之前使用换行符是否与下面有区别 INSERT ALL INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','STREAM',1,0,1) INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','BNUMBER',2,0,1) INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','Description',3,9,0) SELECT *
INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','STREAM',1,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','BNUMBER',2,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','Description',3,9,0)
SELECT * FROM dual;
并且在选择之前没有新行
INSERT ALL
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','STREAM',1,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','BNUMBER',2,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','Description',3,9,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','STREAM',1,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','BNUMBER',2,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','Description',3,9,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','STREAM',1,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','BNUMBER',2,0,1)
INTO LOOKUPTABLE_TYPE VALUES ('LT_EMERGENCY_NUMBER','Description',3,9,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
没有区别。您可以在不影响查询含义的情况下,为SQL语句添加任意多的空格,直至达到最大大小 创建表可查找的\u类型 VARCHAR250, b VARCHAR250, c INT, d INT, 电子智力 ; 然后: 全部插入 进入可查找的\u类型值'LT\u紧急\u编号','STREAM',1,0,1 进入可查找的类型值“LT\U紧急情况编号”、“B编号”、2,0,1 进入可查找类型值“LT\U紧急情况\U编号”和“说明”,3,9,0 从双重选择中选择*; 将提供: 还将提供: SQL/Plus的默认行为是不接受SQL语句中的空行,并假定这将终止该语句并返回。要更改此行为以允许空行,您需要包括指令:
set sqlblanklines on
当SQL/PLUS用空白行解析语句时,它会将语句拆分为两个语句:
全部插入 进入可查找的\u类型值'LT\u紧急\u编号','STREAM',1,0,1 进入可查找的类型值“LT\U紧急情况编号”、“B编号”、2,0,1 进入可查找类型值“LT\U紧急情况\U编号”和“说明”,3,9,0 及 第一个是无效语法,第二个是有效语句,SQL/Plus将处理它并显示查询的输出如果您启用空行,它将处理完整的语句。非常感谢,我正在使用sqlplus运行此查询,所以它仍然没有区别,@MustafaMahmod您使用的用户界面应该没有区别,因为解析查询的不是UI,而是服务器上数据库中的SQL引擎。我也希望如此,但是你能再看一次吗?我添加了一个快照来了解正在发生的事情,我通过select语句确认了这一点,所以实际上空行不会引起任何问题,使用toad我认为它可以将其编译为plsql,而使用sqlplus而不是sameI希望我不会占用你太多时间,我更新了一些日志,它清楚地显示了将指令放入登录时运行的login.sql脚本中的不同之处。你应该能够使用这种方法。 3 rows affected
D
-
X
set sqlblanklines on
SELECT * FROM dual;