Reputation: 1
I am having trouble being able to run my SQL script in its entirety, even though if I individually select statements they run easily.
I believe the problem lies with my blocks that I have added.
One of which is:
begin
for i in (select constraint_name, table_name from user_constraints where constraint_type ='R'
and status = 'ENABLED') LOOP
execute immediate 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
end loop;
end;
Again, I can run each segment individually without fault, and even the entire file minus these code blocks just as well. But when i add these code blocks, It doesn't run.
EDIT: Sorry, here are the errors and a better explanation.
The log starts off with "old:begin" and then follows by logging the entire script instead of running it. The error itself is:
Error report:
ORA-06550: line 11, column 1:
PLS-00103: Encountered the symbol "TRUNCATE"
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Here is the code without the INSERT statements, as I know those work fine.
/*
* NOTE: For some reason I have yet to figure out, I can not run the Disable Foreign Keys or
* Enable Foreign Keys blocks with the entiriry of the script. So I have been having to
* disable them, run the truncates, and then enable them. Then, and only then, can I
* run the rest of the INSERT statements.
*/
/*
* My New Cat Project
*/
/*
* DISABLE FOREIGN KEYS
*
* CODE USED FROM:
* http://blog.yourdotnetsolution.com/2008/05/how-to-disable-or-enable-all-foreign.html
*/
begin
for i in (select constraint_name, table_name from user_constraints where constraint_type ='R'
and status = 'ENABLED') LOOP
execute immediate 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
end loop;
end;
/*
* TRUNCATE TABLES AND DROP SEQUENCES
*/
TRUNCATE TABLE CARE;
TRUNCATE TABLE FAVORITES;
TRUNCATE TABLE MEDICINE_PRESCRIBED;
TRUNCATE TABLE MEDICATION;
TRUNCATE TABLE MEDICAL_CONDITIONS;
TRUNCATE TABLE MEDICAL_INFO;
TRUNCATE TABLE SURGERY;
TRUNCATE TABLE TREATMENT;
TRUNCATE TABLE VET_VISIT;
TRUNCATE TABLE VET;
TRUNCATE TABLE CAT_RECEIVED;
TRUNCATE TABLE RELINQUISHER;
TRUNCATE TABLE CAT_FOUND;
TRUNCATE TABLE ADOPTION;
TRUNCATE TABLE ADOPTER;
TRUNCATE TABLE EVENT;
TRUNCATE TABLE DONATIONS;
TRUNCATE TABLE DONOR;
TRUNCATE TABLE MILEAGE;
TRUNCATE TABLE FCP_EXPENSE;
TRUNCATE TABLE EXPENSE_TYPE;
TRUNCATE TABLE FCP_INITIALIZATION;
TRUNCATE TABLE FOSTER_CARE_PROVIDER;
TRUNCATE TABLE ORGANIZATION;
TRUNCATE TABLE CAT_TEMPERAMENTS;
TRUNCATE TABLE CAT;
DROP SEQUENCE CAT_SEQ;
DROP SEQUENCE CAT_TEMPERAMENTS_SEQ;
DROP SEQUENCE ORGANIZATION_SEQ;
DROP SEQUENCE FOSTER_CARE_PROVIDER_SEQ;
DROP SEQUENCE FCP_INITIALIZATION_SEQ;
DROP SEQUENCE EXPENSE_TYPE_SEQ;
DROP SEQUENCE FCP_EXPENSE_SEQ;
DROP SEQUENCE MILEAGE_SEQ;
DROP SEQUENCE DONOR_SEQ;
DROP SEQUENCE DONATIONS_SEQ;
DROP SEQUENCE EVENT_SEQ;
DROP SEQUENCE ADOPTER_SEQ;
DROP SEQUENCE ADOPTION_SEQ;
DROP SEQUENCE CAT_FOUND_SEQ;
DROP SEQUENCE RELINQUISHER_SEQ;
DROP SEQUENCE CAT_RECEIVED_SEQ;
DROP SEQUENCE VET_SEQ;
DROP SEQUENCE VET_VISIT_SEQ;
DROP SEQUENCE TREATMENT_SEQ;
DROP SEQUENCE SURGERY_SEQ;
DROP SEQUENCE MEDICAL_INFO_SEQ;
DROP SEQUENCE MEDICAL_CONDITIONS_SEQ;
DROP SEQUENCE MEDICATION_SEQ;
DROP SEQUENCE MEDICINE_PRESCRIBED_SEQ;
DROP SEQUENCE FAVORITES_SEQ;
DROP SEQUENCE CARE_SEQ;
/*
* ENABLE FOREIGN KEYS
*
* CODE USED FROM:
* http://blog.yourdotnetsolution.com/2008/05/how-to-disable-or-enable-all-foreign.html
*/
begin
for i in (select constraint_name, table_name from user_constraints where constraint_type ='R'
and status = 'DISABLED') LOOP
execute immediate 'alter table '||i.table_name||' enable constraint '||i.constraint_name||'';
end loop;
end;
/*
* CREATE SEQUENCES
*/
/*
* CAT
*/
CREATE SEQUENCE CAT_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* CAT TEMPERAMENTS
*/
CREATE SEQUENCE CAT_TEMPERAMENTS_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* ORGANIZATION
*/
CREATE SEQUENCE ORGANIZATION_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* FOSTER CARE PROVIDER
*/
CREATE SEQUENCE FOSTER_CARE_PROVIDER_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* FCP INITIALIZATION
*/
CREATE SEQUENCE FCP_INITIALIZATION_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* EXPENSE TYPES
*/
CREATE SEQUENCE EXPENSE_TYPE_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* FOSTER CARE PROVIDER: EXPENSES
*/
CREATE SEQUENCE FCP_EXPENSE_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* MILEAGE
*/
CREATE SEQUENCE MILEAGE_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* DONORS
*/
CREATE SEQUENCE DONOR_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* DONATIONS
*/
CREATE SEQUENCE DONATIONS_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* EVENTS
*/
CREATE SEQUENCE EVENT_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* ADOPTER
*/
CREATE SEQUENCE ADOPTER_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* ADOPTION
*/
CREATE SEQUENCE ADOPTION_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* CATS FOUND
*/
CREATE SEQUENCE CAT_FOUND_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* RELINQUISHERS
*/
CREATE SEQUENCE RELINQUISHER_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* CATS RECEIVED
*/
CREATE SEQUENCE CAT_RECEIVED_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* VET
*/
CREATE SEQUENCE VET_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* VET VISITS
*/
CREATE SEQUENCE VET_VISIT_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* TREATMENTS
*/
CREATE SEQUENCE TREATMENT_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* SURGERY
*/
CREATE SEQUENCE SURGERY_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* MEDICAL INFO
*/
CREATE SEQUENCE MEDICAL_INFO_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* MEDICAL CONDITIONS
*/
CREATE SEQUENCE MEDICAL_CONDITIONS_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* MEDICATION
*/
CREATE SEQUENCE MEDICATION_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* MEDICINE PRESCIBED
*/
CREATE SEQUENCE MEDICINE_PRESCRIBED_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* FAVORITES
*/
CREATE SEQUENCE FAVORITES_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
/*
* CARE
*/
CREATE SEQUENCE CARE_SEQ
MINVALUE 1
INCREMENT BY 1
CACHE 20;
Upvotes: 0
Views: 195
Reputation: 7169
Functions need to be ended with /
when running from a SQL file in Oracle. For example:
begin
for i in (select constraint_name, table_name from user_constraints where constraint_type ='R'
and status = 'ENABLED') LOOP
execute immediate 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
end loop;
end;
/
Upvotes: 0
Reputation: 451
Since there is no info about error code returned from your block - there is no detailed answer only general advise.
Execute immediate must contain a valid DDL also.
Upvotes: 1