Executing PL/SQL Begin/End procedure from Oracle JDBC thin driver -
Executing PL/SQL Begin/End procedure from Oracle JDBC thin driver -
i trying create oracle pl/sql procedures , execute them via oracle jdbc (thin driver). here total pl/sql script:
begin in (select owner, constraint_name, table_name all_constraints owner = 'schema' , status = 'enabled') loop execute immediate 'alter table schema.'||i.table_name||' disable constraint schema.'||i.constraint_name||''; end loop; end; / begin in (select table_name all_tables owner = 'schema') loop execute immediate 'truncate table schema.'||i.table_name||''; end loop; end; / begin in (select owner, constraint_name, table_name all_constraints owner = 'schema' , status = 'disabled') loop execute immediate 'alter table schema.'||i.table_name||' enable constraint schema.'||i.constraint_name||''; end loop; end; /
in java splitting on '/' each begin end block executed in separate statement. java code execute statement is:
callablestatement c = dbc.getconnection().preparecall(sqlstatement); c.executeupdate();
i'm receiving next error:
java.sql.sqlsyntaxerrorexception: ora-00933: sql command not ended ora-06512: @ line 3
how format , execute pl/sql in jdbc?
updated: clarify, 3 statements executed without '/' delimiter split on.
updated: oracle server next version: oracle database 11g release 11.2.0.1.0 - 64bit production
in "enable /diable" constraint shouldn't add together schema name (your'schema).
from manual: alter table
your example:
begin in (select owner, constraint_name, table_name all_constraints owner = 'schema' , status = 'enabled') loop execute immediate 'alter table schema.' || i.table_name || ' disable constraint ' || i.constraint_name; end loop; end;
test query
select ac.constraint_name, ac.table_name, ac.status, ac.owner all_constraints ac ac.owner = 'hr' , ac.constraint_name = 'emp_salary_min'
result
constraint_name table_name status owner ------------------------------ ------------------------------ -------- -------------------------------------------------------------------------------- emp_salary_min employees enabled hr
correct dynamic sql
begin execute immediate 'alter table hr.employees disable constraint emp_salary_min'; end;
previous query result
constraint_name table_name status owner ------------------------------ ------------------------------ -------- -------------------------------------------------------------------------------- emp_salary_min employees disabled hr
oracle jdbc plsql ora-00933
Comments
Post a Comment