Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行方法时发生SQL3错误,数据类型不一致_Sql_Database_Oracle - Fatal编程技术网

执行方法时发生SQL3错误,数据类型不一致

执行方法时发生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:数据类型不一致;预期:参

我有一个用于电影院电影管理的数据库: 电影ID、电影名称、导演姓名、制作预算、发行日期 屏幕ID\u屏幕,ID\u电影*,屏幕日期,房间,城市 观看ID,观众姓名,ID屏幕*,票价

我需要用MySpectators方法完成电影类型,返回完整的,没有观众副本的电影类型。这是我为这个方法的签名和主体写的:

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;
/