ber*_*d_k 14 oracle sqlplus user-defined-type
我只是遇到了问题,我定义了一个类型并在 TOAD 中对其进行了测试,一切正常。但是在 SQL*PLUS 下运行它抛出了一个错误。
例子:
CREATE OR REPLACE TYPE MyType AS OBJECT (
Item1 NUMBER,
Item2 NUMBER
);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我必须在这里添加斜线
CREATE OR REPLACE TYPE MyType AS OBJECT (
Item1 NUMBER,
Item2 NUMBER
);
/
Run Code Online (Sandbox Code Playgroud)
对我来说,它看起来类似于不需要斜线的 Create Table 语句。我觉得比较混乱。我知道它是如何工作的,但谁能解释为什么做出这个设计决定?
Vin*_*rat 15
您需要/
在 SQL*Plus 中的 PL/SQL 块之后:
SQL> begin
2 null;
3 end;
4 -- here you need a /
5 /
PL/SQL procedure successfully completed
Run Code Online (Sandbox Code Playgroud)
这样 SQL*Plus 就知道您已经完成了您的语句(可能包括中间的、非终止的;
)。
SQL 类型可能包括 PL/SQL 代码,因此 SQL*Plus 开发人员决定/
在所有情况下都需要在 CREATE TYPE 之后:
SQL> CREATE OR REPLACE TYPE t AS OBJECT (
2 x NUMBER,
3 MEMBER PROCEDURE setx(p_x NUMBER)
4 );
5 /
Type created
SQL> CREATE OR REPLACE TYPE BODY t AS
2 MEMBER PROCEDURE setx (p_x NUMBER) IS
3 BEGIN
4 x := p_x;
5 END;
6 END;
7 /
Type body created
Run Code Online (Sandbox Code Playgroud)
注意:/
在定义过程、包或包体之后还需要一个(出于同样的原因)。