我正在尝试创建 Oracle PL/SQL 过程并通过 Oracle JDBC(瘦驱动程序)执行它们。这是完整的 PL/SQL 脚本:
begin
for i in (select owner, constraint_name, table_name from all_constraints where owner = 'SCHEMA' and status = 'ENABLED') LOOP
execute immediate 'alter table SCHEMA.'||i.table_name||' disable constraint SCHEMA.'||i.constraint_name||'';
end loop;
end;
/
begin
for i in (select table_name from all_tables where owner = 'SCHEMA') LOOP
execute immediate 'truncate table SCHEMA.'||i.table_name||'';
end loop;
end;
/
begin
for i in (select owner, constraint_name, table_name from all_constraints where owner = 'SCHEMA' and status = 'DISABLED') LOOP
execute immediate 'alter table SCHEMA.'||i.table_name||' enable constraint SCHEMA.'||i.constraint_name||'';
end loop;
end;
/
在java中,我在'/'上进行拆分,因此每个开始结束块都在单独的语句中执行。执行该语句的java代码是:
CallableStatement c = dbc.getConnection().prepareCall(sqlStatement);
c.executeUpdate();
我收到以下错误:
java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
ORA-06512: at line 3
如何格式化并在 JDBC 中执行 PL/SQL?
更新:为了澄清,所有三个语句都在没有分割的“/”分隔符的情况下执行。
更新: oracle服务器为以下版本:Oracle Database 11g Release 11.2.0.1.0 - 64bit Production