如何将值附加到 oracle 类型
如何将 3 或 4 个不同的值附加(插入)到一个 oracle 类型,然后用游标打开它。
例如(伪):
insert into mytype select 1 from dual;
insert into mytype select 3 from dual;
insert into mytype select 5 from dual;
open cursor_1 for select * from table(mytype);
这可以在 pl/sql 中做到吗?
我知道这是微不足道的,可以合并到一个查询中,但我真正的需要是进行不同的查询并不断将结果附加到 mytype。
how can I append (insert) 3 or 4 different values to an oracle type and then later open it up for a cursor.
For example (pseudo):
insert into mytype select 1 from dual;
insert into mytype select 3 from dual;
insert into mytype select 5 from dual;
open cursor_1 for select * from table(mytype);
Is this possible to do in pl/sql?
I know this is trivial and can be combined into one query but my real need is to have different queries and keep appending the results to mytype.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设您的意思是您有一个自定义 SQL 类型(大概是嵌套表类型)和该类型的 PL/SQL 变量:我不相信您可以
INSERT
到其中,而且我也不相信认为您可以以附加到集合的方式SELECT
进入它。您可以选择一个标量变量,然后按程序将其附加到集合中。
Assuming you mean you have a custom SQL type (presumably a nested table type), and a PL/SQL variable of that type: I don't believe you can
INSERT
into it, and I don't think you canSELECT
into it in a way that would append to the collection.You can select into a scalar variable, then append it to the collection procedurally.
自 10g 以来,操作 PL/SQL 集合变得更加容易,它为我们提供了一些可以与它们一起使用的 SET 运算符。
如您所知,使用 TABLE() 函数意味着我们必须使用 SQL 类型...
以下块用一些数字填充集合,并在 FOR 循环中使用这些数字。然后它执行另一个查询来填充第二个集合。使用 MULTISET UNION 语法将第二个集合添加到第一个集合。与 SQL UNION 运算符不同,此实现不会消除重复(我们可以使用 MULTISET UNION DISTINCT 来实现)。该代码通过再次循环第一个集合来结束,以证明它包含两组数字。
Manipulating PL/SQL collections is a lot easier since 10g, which gave us some SET operators we can use with them.
As you know, to employ the TABLE() function means we have to use a SQL type...
The following block populates a collection with some numbers, which it uses in a FOR loop. Then it executes a another query to populate a second collection. The second collection is added to the first collection using the MULTISET UNION syntax. Unlike the the SQL UNION operator, this implementation does not winnow duplicates (we can use MULTISET UNION DISTINCT for that). The code finishes off by looping through the first collection again, to prove that it contains both sets of numbers.