Oracle Query Join问题

aca*_*dia 2 sql oracle oracle10g

我有一个Oracle表,如下所示

Orders
---------
ORDERID
DESCRIPTION
TOTALVALUE
ORDERSTATUS
Run Code Online (Sandbox Code Playgroud)

我有下面提到的查询

select ORDERID,ORDERSTATUS
FROM ORDERS
WHERE ORDERID IN( 1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1020,
                  1030,104,1040,1090,789)
Run Code Online (Sandbox Code Playgroud)

一些orderIDs上面提到的不是订单表.尽管我想要的orderIDs出现在同为空状态的结果集.

感谢您的帮助.

Cod*_*odo 7

那这个呢:

SELECT T.COLUMN_VALUE AS ORDERID, ORD.ORDERSTATUS
FROM TABLE(SYS.ODCINUMBERLIST(
        1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1020,1030,104,1040,1090,789
    )) T
LEFT JOIN ORDERS ORD ON ORD.ORDERID = T.COLUMN_VALUE;
Run Code Online (Sandbox Code Playgroud)

如果订单ID不是固定的,而是参数,您也可以使它工作.但解决方案取决于您是从PL/SQL还是从其他编程语言(如C#,Java,PHP等)调用语句.

更新: SYS.ODCINUMBERLIST只是已在Oracle中定义的表类型.你可以使用自己的类型:

CREATE TYPE NUMBER_TABLE_T AS TABLE OF NUMBER;
Run Code Online (Sandbox Code Playgroud)