CREATE OR REPLACE TYPE product_type AS OBJECT(
product_name varchar2(20),
product_description varchar2(4000) ,
product_price number,
product_price_date date,
member procedure AddProuduct (p_product_name varchar2,
p_product_description varchar2, p_product_price number,p_product_price_date date),
member function DaysSincePriceChange
Return number
);
create table product_table of product_type;
create or replace type body product_type as
member procedure AddProuduct (p_product_name varchar2,
p_product_description varchar2, p_product_price number,p_product_price_date date) as
begin
insert into product_table values (p_product_name,p_product_description,p_product_price,
p_product_price_date);
end AddProduct;
end;
在oracle 8.1.5 ,win2000server ,sqlplus下运行
出现该警告,我的 这个实体是建立了,还是没有建立呢?,有没有什么影响。
3 个解决方案
#1
在sqlplus下:
1.show error;
2.SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE='TYPE';
1.show error;
2.SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE='TYPE';
#2
1.按照你提供的脚本,执行的确会有问题:
警告:已创建的类型出现编译错误。
SQL> show erro
TYPE PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
12/1 PLS-00103: 出现符号 "CREATE"
2.可以分步骤运行,先执行
CREATE OR REPLACE TYPE product_type AS OBJECT(
product_name varchar2(20),
product_description varchar2(4000),
product_price number,
product_price_date date,
member procedure AddProuduct (p_product_name varchar2,
p_product_description varchar2, p_product_price number,p_product_price_date date),
member function DaysSincePriceChange Return number
);
SQL> /
类型已创建。
3.执行第二段脚本时出错:
SQL> create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProduct;
8 end;
9 /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
7/8 PLS-00113: END 标识符 'ADDPRODUCT' 必须同 'ADDPROUDUCT' 匹配
(在第 2 行,第 18 列)
可以发现 end AddProduct; 这句拼写错了。
4.修改后继续执行:
1 create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProuduct;
8* end;
SQL> /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
8/17 PLS-00538: 子程序或游标 'DAYSSINCEPRICECHANGE'
必须按照对象类型说明进行说明,并且必须在对象类型主体中进行定义
现在你应该知道为什么了吧?
我个人建议你把insert操作和对象放到一个package里面,这样就不会有什么问题了。
警告:已创建的类型出现编译错误。
SQL> show erro
TYPE PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
12/1 PLS-00103: 出现符号 "CREATE"
2.可以分步骤运行,先执行
CREATE OR REPLACE TYPE product_type AS OBJECT(
product_name varchar2(20),
product_description varchar2(4000),
product_price number,
product_price_date date,
member procedure AddProuduct (p_product_name varchar2,
p_product_description varchar2, p_product_price number,p_product_price_date date),
member function DaysSincePriceChange Return number
);
SQL> /
类型已创建。
3.执行第二段脚本时出错:
SQL> create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProduct;
8 end;
9 /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
7/8 PLS-00113: END 标识符 'ADDPRODUCT' 必须同 'ADDPROUDUCT' 匹配
(在第 2 行,第 18 列)
可以发现 end AddProduct; 这句拼写错了。
4.修改后继续执行:
1 create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProuduct;
8* end;
SQL> /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
8/17 PLS-00538: 子程序或游标 'DAYSSINCEPRICECHANGE'
必须按照对象类型说明进行说明,并且必须在对象类型主体中进行定义
现在你应该知道为什么了吧?
我个人建议你把insert操作和对象放到一个package里面,这样就不会有什么问题了。
#3
谢谢楼上的,深表感谢。
#1
在sqlplus下:
1.show error;
2.SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE='TYPE';
1.show error;
2.SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE='TYPE';
#2
1.按照你提供的脚本,执行的确会有问题:
警告:已创建的类型出现编译错误。
SQL> show erro
TYPE PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
12/1 PLS-00103: 出现符号 "CREATE"
2.可以分步骤运行,先执行
CREATE OR REPLACE TYPE product_type AS OBJECT(
product_name varchar2(20),
product_description varchar2(4000),
product_price number,
product_price_date date,
member procedure AddProuduct (p_product_name varchar2,
p_product_description varchar2, p_product_price number,p_product_price_date date),
member function DaysSincePriceChange Return number
);
SQL> /
类型已创建。
3.执行第二段脚本时出错:
SQL> create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProduct;
8 end;
9 /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
7/8 PLS-00113: END 标识符 'ADDPRODUCT' 必须同 'ADDPROUDUCT' 匹配
(在第 2 行,第 18 列)
可以发现 end AddProduct; 这句拼写错了。
4.修改后继续执行:
1 create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProuduct;
8* end;
SQL> /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
8/17 PLS-00538: 子程序或游标 'DAYSSINCEPRICECHANGE'
必须按照对象类型说明进行说明,并且必须在对象类型主体中进行定义
现在你应该知道为什么了吧?
我个人建议你把insert操作和对象放到一个package里面,这样就不会有什么问题了。
警告:已创建的类型出现编译错误。
SQL> show erro
TYPE PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
12/1 PLS-00103: 出现符号 "CREATE"
2.可以分步骤运行,先执行
CREATE OR REPLACE TYPE product_type AS OBJECT(
product_name varchar2(20),
product_description varchar2(4000),
product_price number,
product_price_date date,
member procedure AddProuduct (p_product_name varchar2,
p_product_description varchar2, p_product_price number,p_product_price_date date),
member function DaysSincePriceChange Return number
);
SQL> /
类型已创建。
3.执行第二段脚本时出错:
SQL> create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProduct;
8 end;
9 /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
7/8 PLS-00113: END 标识符 'ADDPRODUCT' 必须同 'ADDPROUDUCT' 匹配
(在第 2 行,第 18 列)
可以发现 end AddProduct; 这句拼写错了。
4.修改后继续执行:
1 create or replace type body product_type as
2 member procedure AddProuduct (p_product_name varchar2,
3 p_product_description varchar2, p_product_price number,p_product_price_date date) as
4 begin
5 insert into product_table values (p_product_name,p_product_description,p_product_price,
6 p_product_price_date);
7 end AddProuduct;
8* end;
SQL> /
警告:已创建的类型主体出现编译错误。
SQL> show error
TYPE BODY PRODUCT_TYPE出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
8/17 PLS-00538: 子程序或游标 'DAYSSINCEPRICECHANGE'
必须按照对象类型说明进行说明,并且必须在对象类型主体中进行定义
现在你应该知道为什么了吧?
我个人建议你把insert操作和对象放到一个package里面,这样就不会有什么问题了。
#3
谢谢楼上的,深表感谢。