Как включить несколько команд в запрос JDBC SQL к Oracle 10g? - PullRequest
1 голос
/ 10 декабря 2010

Я совершенно новичок в 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?Или я просто пропускаю какой-то синтаксис для их разделения?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Для оракула, если вы включите свой sql между BEGIN и END; это должно работать.

Ex:

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;
2 голосов
/ 10 декабря 2010

Каждый из них является отдельным утверждением.Выпускайте по одному через отдельные объекты Statement через Connection#createStatement() или через несколько вызовов SQL на Statement#execute(String).

И наоборот, какова причина, почему вы хотите получить их в одном выделенном выражении?

...