我可以在Oracle 11g中做这样的事情吗:
select cast(multiset( select * from table_name) as table_name%TYPE) from dual;在纯sql中,没有预定义类型?它支持像多态性这样的东西吗?
发布于 2013-01-29 21:55:33
我想更大的问题是你想在这里实现什么。根据Oracle的说法,
Oracle通知
数据库使用子查询的结果集并返回集合值
因此,在您的示例中(如果修改正确),您将返回多个行并将它们放入一个集合中。这可以是各种形式(varray、嵌套表、对象表等),但目标是从查询中填充集合,然后使用集合(这就是为什么我说最大的问题是您最终想要做什么/实现什么)。
发布于 2013-01-30 21:36:51
这是我不久前从某个地方复制的一些示例,并将其保留下来供参考。也许这会对你有所帮助:
-- 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
/https://stackoverflow.com/questions/14583539
复制相似问题