执行方法时发生SQL3错误,数据类型不一致
我有一个用于电影院电影管理的数据库: 电影ID、电影名称、导演姓名、制作预算、发行日期 屏幕ID\u屏幕,ID\u电影*,屏幕日期,房间,城市 观看ID,观众姓名,ID屏幕*,票价 我需要用MySpectators方法完成电影类型,返回完整的,没有观众副本的电影类型。这是我为这个方法的签名和主体写的:执行方法时发生SQL3错误,数据类型不一致,sql,database,oracle,Sql,Database,Oracle,我有一个用于电影院电影管理的数据库: 电影ID、电影名称、导演姓名、制作预算、发行日期 屏幕ID\u屏幕,ID\u电影*,屏幕日期,房间,城市 观看ID,观众姓名,ID屏幕*,票价 我需要用MySpectators方法完成电影类型,返回完整的,没有观众副本的电影类型。这是我为这个方法的签名和主体写的: create type tset_spectator as table of varchar(100); / 我遇到了无法修复的错误: PL/SQL:ORA-00932:数据类型不一致;预期:参
create type tset_spectator as table of varchar(100);
/
我遇到了无法修复的错误:
PL/SQL:ORA-00932:数据类型不一致;预期:参考;获得:dbasinema.TSET_REF_SEEN
注意:我以前已经创建了类型、表和嵌套表
谢谢您的帮助。您还没有显示您的DBACINEMA.TSET_REF_,因此我只能猜测这是一个集合,您需要再使用一个表:
创建或替换类型主体tfilm作为成员函数MySpectators return tset_cobservator
是
观众席观众席;
开始
选择CASTMULTISET
选择derefvaluescr\u seen
来自电影f,表f。电影放映p
,tablederefvaluep.screening\u seen scr\u seen
其中f.ID_FILM=self.ID_FILM
作为一名观众
观众席
来自双重;
返回观众胶片;
终止
终止
/
您还没有显示您的dbasinema.TSET_REF_SEEN,因此我只能猜测这是一个集合,您需要再使用一个表:
创建或替换类型主体tfilm作为成员函数MySpectators return tset_cobservator
是
观众席观众席;
开始
选择CASTMULTISET
选择derefvaluescr\u seen
来自电影f,表f。电影放映p
,tablederefvaluep.screening\u seen scr\u seen
其中f.ID_FILM=self.ID_FILM
作为一名观众
观众席
来自双重;
返回观众胶片;
终止
终止
/
是否显示dbasinema.TSET\u REF\u的DDL描述?看起来这不是REF,但deref希望REFcreate类型tset_REF_被视为REF tseen的表/创建或替换类型tseen作为对象ID\u SEEN integer、观众名称varchar100、门票价格integer、SEEN SEEN screening Ref t screening/是否显示dbasinema.TSET\u REF\u的DDL描述?看起来这不是REF,但deref希望REFcreate类型tset_REF_被视为REF tseen的表/创建或替换类型tseen作为对象ID\u SEEN integer、观众名称varchar100、门票价格integer、SEEN SEEN screening Ref t screening/创建类型tset_ref_,作为ref-tseen的表/创建或替换类型tseen作为对象ID\u SEEN integer、观众名称varchar100、门票价格integer、SEEN SEEN screening Ref t screening/我没有错误,谢谢,只有一个问题你建议我写select DERFVALUESCR\u SEED或select valuescr\u SEED.COUNDITOR\u NAME或select DERFVALUESCR\u SEED.COUNDITOR\u NAME?@Byomi last one,只是为了在不进行隐式转换的情况下更加清楚创建类型tset\u ref\u seen表/创建或替换类型tseen作为对象ID\u SEEN integer、观众名称varchar100、门票价格integer、SEEN SEEN screening Ref t screening/我没有错误,谢谢,只有一个问题你建议我写select derefvaluescr\u SEED或select valuescr\u SEED.COUNDITOR\u NAME或select derefvaluescr\u SEED.COUNDITOR\u NAME?@Byomi last one,只是为了在不进行隐式转换的情况下更清楚一些
alter type tfilm add member function MySpectators return tset_spectator cascade;
create or replace type body tfilm as member function MySpectators return tset_spectator
is
spectatorsfilms tset_spectator;
Begin
select CAST(MULTISET(
select deref(deref(value(p)).screening_seen)
from film f, table(f.film_screening) p
where f.ID_FILM=self.ID_FILM) as tset_spectator)
into spectatorsfilms
from dual;
return spectatorsfilms;
end;
End;
/