gpt4 book ai didi

oracle - 如何在游标中使用嵌套表

转载 作者:行者123 更新时间:2023-12-04 03:07:47 28 4
gpt4 key购买 nike

CREATE PROCEDURE( p_cur  OUT a_cur)
IS
type rec is record( a varchar2(2), b number, c number);
type tab is table of rec;
tab1 tab:=tab();
begin

tab1.extend;
tab1(tab1.last).a:='as';
tab1(tab1.last).b:=2;
tab1(tab1.last).c:=3;
tab1.extend;
tab1(tab1.last).a:='jj';
tab1(tab1.last).b:=2;
tab1(tab1.last).c:=3;

--??---
end;

我在这里 tab1 创建了一个嵌套表,但我的问题是我想在游标中使用这个嵌套表并想使用这个嵌套表返回整个记录,限制是我不想使用任何临时表。我将 RDBMS 用作 ORACLE

最佳答案

如果您想像使用表格一样使用集合,那么您需要查看 TABLE() 函数:

这里有一个例子:http://www.dobosz.at/oracle/select-from-plsql-table/

这里还有一个很好的资源:http://www.databasejournal.com/features/oracle/article.php/2222781/Returning-Rows-Through-a-Table-Function-in-Oracle.htm

您需要在数据库中声明集合类型,然后将其填充到您的过程中,然后从中进行选择。

我在这里用这个方法回答了一个问题:Can a table variable be used in a select statement where clause?

看一看它应该可以帮助您实现目标。

希望对你有帮助

编辑:针对您的问题,这段代码应该按照您的意愿执行。我没有对其进行测试,但它应该非常接近您的需要,您可以根据需要进行调试。

-- Create the relevent Object
CREATE TYPE data_obj_type AS OBJECT (
a VARCHAR2(2),
b NUMBER,
c NUMBER
);

类型创建

-- Create the collection to hold the objects
CREATE TYPE table_obj_type IS TABLE OF data_obj_type;

类型创建

CREATE OR REPLACE
PROCEDURE cursor_values(
p_cur OUT sys_refcursor
)
IS
-- Create a variable and initialise it
tab1 table_obj_type := table_obj_type();
BEGIN
-- Populate the tab1 collection
tab1.extend;
tab1(tab1.last) := data_obj_type('as', 2, 3);
tab1.extend;
tab1(tab1.last) := data_obj_type('jj', 2, 3);
--
-- Open ref_cursor for output
OPEN p_cur FOR
SELECT a,
b,
c
FROM TABLE(CAST(tab1 AS table_obj_type));
END cursor_values;

注意:这是从此页面修改的代码: http://www.akadia.com/services/ora_return_result_set.html

关于oracle - 如何在游标中使用嵌套表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8485546/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com