【发布时间】:2017-11-21 16:28:23
【问题描述】:
我有一堆需要执行的 SQL,但 Oracle 抱怨此错误:
Error Message : ORA-00911: invalid character
Position : 27
Statement : (dump below)
我不确定是什么原因造成的。正如一些答案所建议的那样,我已经尝试在末尾删除分号,但这并没有奏效。我正在尝试使用 DB::unprepared() 方法在 Laravel 5.2 上运行此 SQL 转储,如下所示:
DB::connection('oracle')->unprepared(File::get(base_path('/path/to/oracle_dump.sql')));
这是我要运行的 SQL:
DROP TABLE "MYUSERNAME"."POSTS";
DROP SEQUENCE "MYUSERNAME"."POST_SEQ";
CREATE TABLE POSTS
(
ID NUMBER(*, 0) NOT NULL, TITLE VARCHAR2(1000 BYTE), CONSTRAINT SYS_C004109 PRIMARY KEY(ID)
USING INDEX
(
CREATE UNIQUE INDEX SYS_C004109 ON POSTS (ID ASC)
LOGGING
TABLESPACE TEST_TABLSPACE
PCTFREE 10
INITRANS 2
STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
NOPARALLEL
)
ENABLE
)
LOGGING
TABLESPACE TEST_TABLSPACE
PCTFREE 10
INITRANS 1
STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
NOPARALLEL
CREATE SEQUENCE POST_SEQ INCREMENT BY 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 CACHE 20
CREATE TRIGGER POST_BIR
BEFORE INSERT ON posts
FOR EACH ROW
BEGIN
SELECT post_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
我在 Mac 上使用 SQLDeveloper 来获取此转储。
【问题讨论】:
-
我是 Oracle 的新手。
NUMBER的第一个参数是什么?长度? @KaushikNayak -
而不是
NUMBER(*, 0)使用简单的NUMBER -
我这样做了,我得到了同样的信息——完全没有区别。
-
NUMBER(*,0)与INTEGER@Kaushik 的意思相同;这是完全有效的语法。 -
@Aborted 我一直在玩弄你的说法,我猜techonthenet.com/oracle/errors/ora00911.php 的选项#2。我得到了和你一样的错误,直到我重新输入了第一行的几行,然后我得到了一个不同的错误。我会从头开始重新输入,然后再试一次。