簡體   English   中英

Oracle,將集合轉換為現有表的類型

[英]Oracle, casting collection to type of existing table

我可以在Oracle 11g中執行以下操作嗎?

select cast(multiset( select * from table_name) as table_name%TYPE) from dual;

在普通的SQL中,沒有預先定義的類型? 它支持多態嗎?

我想更大的問題是您想在這里實現什么。 根據甲骨文

MULTISET通知Oracle數據庫獲取子查詢的結果集並返回集合值

因此,在您的示例中(如果修改正確),您將返回多行並將其放入集合中。 這可能有多種形式(varray,嵌套表,對象表等),但目標是從查詢中填充您的集合,然后使用該集合(這就是為什么我說的大問題是您要做什么?想要最終實現/實現)。

這是我前一段時間從某處復制並保留下來以供參考的一些示例。 也許這會幫助您:

-- The following objects create the basis of the example that follows:
CREATE TABLE projects 
 (employee_id NUMBER, project_name VARCHAR2(10))
/

CREATE TABLE emps_short 
   (employee_id NUMBER, last_name VARCHAR2(10))
/

CREATE TYPE project_table_typ AS TABLE OF VARCHAR2(10)
/

 -- The following example of a MULTISET expression uses these objects:
 SELECT e.last_name,
   CAST
 (
  MULTISET(SELECT p.project_name
      FROM projects p 
     WHERE p.employee_id = e.employee_id
   ORDER BY p.project_name)   AS project_table_typ  -- here's your %TYPE --
 ) 
 FROM emps_short e
 ORDER BY e.last_name
 /

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM