1

我是 Oracle 的新手(我来自 MySQL 和 MSSQL),并且是 JDBC 的新手。我的一个表创建查询如下所示:

CREATE TABLE  "LISTS" 
   ("ID" NUMBER NOT NULL ENABLE, 
    "NAME" VARCHAR2(1000) NOT NULL ENABLE, 
    "DOMAIN_ID" NUMBER NOT NULL ENABLE, 
     CONSTRAINT "LISTS_PK" PRIMARY KEY ("ID") ENABLE
   )
/

CREATE OR REPLACE TRIGGER  "BI_LISTS" 
  before insert on "LISTS"               
  for each row  
begin   
    select "LISTS_SEQ".nextval into :NEW.ID from dual; 
end; 

/
ALTER TRIGGER  "BI_LISTS" ENABLE
/

当我尝试connection.createStatement().execute()这个查询时,我得到java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option. 如果我删除斜线,我会得到相同的结果。如果我尝试用分号替换它们,我会得到java.sql.SQLSyntaxErrorException: ORA-00911: invalid character.

是否不可能在 JDBC 和/或 Oracle 的一个查询中包含多个命令?还是我只是缺少某种语法来分隔它们?

4

2 回答 2

3

对于 oracle,如果您在 BEGIN 和 END 之间包含您的 sql;它应该工作。

前任:

BEGIN
    CREATE TABLE  "LISTS" 
       ("ID" NUMBER NOT NULL ENABLE, 
        "NAME" VARCHAR2(1000) NOT NULL ENABLE, 
        "DOMAIN_ID" NUMBER NOT NULL ENABLE, 
        CONSTRAINT "LISTS_PK" PRIMARY KEY ("ID") ENABLE
       )
    ;

    CREATE OR REPLACE TRIGGER  "BI_LISTS" 
      before insert on "LISTS"               
      for each row  
    begin   
        select "LISTS_SEQ".nextval into :NEW.ID from dual; 
    end; 
    ;

    ALTER TRIGGER  "BI_LISTS" ENABLE;
END;
于 2011-11-10T16:29:01.700 回答
2

每一个都是单独的陈述。通过单独的 Statement 对象通过Connection#createStatement()或通过对Statement#execute(String).

相反,您希望它们在一个描述性声明中的原因是什么?

于 2010-12-09T23:25:19.933 回答