如何在对 Oracle 10g 的 JDBC SQL 查询中包含多个命令?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4404141/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to include multiple commands in a JDBC SQL query to Oracle 10g?
提问by Craig Kovatch
I'm completely new to Oracle (I come from MySQL and MSSQL) and am novice at JDBC. One of my table creation queries looks like this:
我是 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
/
When I try to connection.createStatement().execute()
this query, I get java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option
. If I remove the slashes, I get the same. If I try replacing them with semicolons, I get java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
.
当我尝试connection.createStatement().execute()
这个查询时,我得到java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option
. 如果我删除斜杠,我会得到相同的结果。如果我尝试用分号替换它们,我会得到java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
.
Is it not possible to include multiple commands in one query in JDBC and/or Oracle? Or am I just missing some kind of syntax to separate them?
是否不能在 JDBC 和/或 Oracle 的一个查询中包含多个命令?或者我只是缺少某种语法来分隔它们?
回答by Dave
For oracle if you include your sql between BEGIN and END; it should work.
对于 oracle,如果您在 BEGIN 和 END 之间包含您的 sql;它应该工作。
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;
回答by Jé Queue
Each of those are separate statements. Issue one at a time via separate Statement objects via Connection#createStatement()
or via multiple SQL calls to Statement#execute(String)
.
每一个都是单独的陈述。通过单独的 Statement 对象通过Connection#createStatement()
或通过对Statement#execute(String)
.
Conversely, what is your reason for wanting them in one delineated statement?
相反,您在一个描述的陈述中想要它们的原因是什么?