I just had the problem that I defined a Type and tested it in TOAD and all was OK. But running under SQL*PLUS it threw an error.
Example:
CREATE OR REPLACE TYPE MyType AS OBJECT (
Item1 NUMBER,
Item2 NUMBER
);
For some reason I have to add a slash here
CREATE OR REPLACE TYPE MyType AS OBJECT (
Item1 NUMBER,
Item2 NUMBER
);
/
To me it looks similar to a Create Table statement, which doesn't require a slash.
I find it rather confusing. I know how it works, but can anyone explain why this design decision was made?
Best Answer
you need a
/
after a PL/SQL block in SQL*Plus:This is so SQL*Plus knows you are done with your statement (which could include intermediate, non-terminating
;
).SQL types may include PL/SQL code, therefore the SQL*Plus devs decided that you need a
/
in all cases after a CREATE TYPE:Note: you also need a
/
after you define a procedure, a package or a package body (for the same reason).