Oracle PLSQL用户定义的表类型和联接

Oracle PLSQL用户定义的表类型和联接,oracle,stored-procedures,plsql,user-defined-types,varray,Oracle,Stored Procedures,Plsql,User Defined Types,Varray,假设我有一个用户定义的表类型: create or replace type SrcCodeTbl is table of varchar(20); 我有一个具有此类型参数的过程: create or replace procedure Blah.MyProc( srcCodesIN in SrcCodeTbl ) 我是否可以在select/join语句中与过程中的另一个表一起使用srcCodesIn?一直在尝试让它工作,编译器不断报告: select distinct someVal in

假设我有一个用户定义的表类型:

create or replace type SrcCodeTbl is table of varchar(20);
我有一个具有此类型参数的过程:

create or replace procedure Blah.MyProc( srcCodesIN in SrcCodeTbl )
我是否可以在select/join语句中与过程中的另一个表一起使用
srcCodesIn
?一直在尝试让它工作,编译器不断报告:

select distinct someVal into outVal 
from OtherTable ot, srcCodesIn sc 
where ot.ID = sc.column_val;

Error(28,22): PL/SQL: ORA-00942: table or view does not exist
我确信它的语法很简单,只是我还没弄明白。我确实得到了一些与for循环一起工作的东西,但是如果有其他方法,我很感兴趣。谢谢。

怎么样

SELECT DISTINCT someVal 
INTO outVal 
FROM OtherTable ot, TABLE(srcCodesIn) sc 
WHERE ot.ID = sc.column_value

是的,那会有用的。我试了一下你的原始(编辑前)答案,然后吐出了一条模糊的错误信息。有趣的是,我需要将UDT表类型转换为表,然后再将其用作。。。桌子给了你答案,因为另一个人已经有了无数的分数。8) 是的,我在本地的oracle中模拟了它,所以在将其转换为表之前必须对其进行类型转换,然后忘记将其删除:)谢谢你的观点:)计算机都是关于精确定义的。就数据字典而言,UDT“表”是一种类型而不是一种类型。这就是为什么您需要强制转换它,以便在SQL语句中使用它。您使用的是oracle的哪个版本?