我有Oracle DB 11g企业版,我想通过从文件中读取sql脚本来创建表。 Java代码我读下面从文件sql脚本并将其存储在一个String sqlBlock
:换行符 n给出“java.sql.SQLException:ORA-00911:无效字符 n”Oracle 11g
CREATE SEQUENCE VerHist_SeqNum
START WITH 1
INCREMENT BY 1;
CREATE TABLE VerHist
(
SequenceNumber NUMBER(10,0) NOT NULL,
SQLFileName VARCHAR2(100) NOT NULL,
STATUS VARCHAR2(10) NOT NULL,
AppliedDate DATE NOT NULL,
DateCreated DATE
DEFAULT (SYSDATE),
DateUpdated DATE
DEFAULT (SYSDATE),
CONSTRAINT PK_VerHist PRIMARY KEY(SequenceNumber),
CONSTRAINT UC_VerHist_SQLFileNa UNIQUE(SQLFileName)
);
CREATE OR REPLACE TRIGGER VerHist_SeqNum_TRG
BEFORE INSERT
ON VerHist
FOR EACH ROW
BEGIN
SELECT VerHist_SeqNum.NEXTVAL INTO :NEW.SequenceNumber
FROM DUAL;
END;
当我执行此查询它给
值java.sql.SQLException:ORA-00911:无效字符\ n 在(oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java))。 :288)at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)at oracle.jdbc.driver.T4CStatement.executeForRows (T4CStatement.java:946) 在 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168) 在 oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1687) 在 预言。 jdbc.driver.OracleStatement.execute(OracleStateme nt.java:1653)
以下是我的代码执行的SQL块:
Statement stmt = conn.createStatement();
String sqlBlock = //"this contains the content of the file (it contains \n charters)";
stmt.execute(sqlBlock);
是换行章程无效这里,如果是,如何得到这个工作,不然?
请注意,当我复制粘贴此文件的内容并通过Oracle SQL Developer运行脚本它运行良好。
为什么你有\ n字符?删除它们... –
尝试使用转义字符意味着\\ n代替\ n –
我尝试用单个空格替换'\ n',也试过'\\ n'而不是'\ n',但仍然得到相同的错误信息。 – Learner