PLS-00103封装了符号

时间:2018-12-09 12:56:20

标签: sql oracle

我已经尝试寻找这种类型的错误。我确实在其他人身上有类似的错误,但有不同的问题。请帮我解决这个示例oracle查询的好方法是什么?

create type Exams (
    year char(4),
    city varchar(20)
)
create table exams of type Exams 

create OR REPLACE type Skills AS OBJECT(
type varchar(20),
ExamSet Exams multiset
);
/
create table skills of Skills;

这是脚本输出中的错误:

LINE/COL  ERROR
--------- -------------------------------------------------------------
1/12      PLS-00103: Encountered the symbol "(" when expecting one of the following:     ; is authid as compress force compiled wrapped under 
Errors: check compiler log

2 个答案:

答案 0 :(得分:1)

尝试:

CREATE OR REPLACE TYPE ExamsType AS OBJECT ( 
    year char(4),
    city varchar(20) 
);
/
create table Exams OF ExamsType;

修复:

  • 创建类型AS OBJECT;这将为您提供一个实际上可以保存属性的抽象数据类型(ADT)-请参见the oracle docs

  • create type语句的末尾需要用分号和斜杠

  • 表的名称不能与类型相同

  • CREATE TABLE
  • 语法错误

要插入此表中,通常将使用以下语句:

insert into Exams values( ExamsType('2018', 'my adress') );

答案 1 :(得分:0)

这将起作用:

CREATE TABLE new_table
  AS (SELECT *
      FROM old_table WHERE 1=2);

对于您的情况,它是这样的:

CREATE TABLE exams 
  AS (SELECT *
      FROM Exams WHERE 1=2);

对于1=2,它不选择任何行,但是对于as,它会复制表定义! 谢谢!!!!!!!!!