oracle - 使用我的过滤器值从表类型中获取特定行
问题描述
我有如下程序:
cursor my_cursor is
select first_column, second_column, third_column from table_name;
TYPE my_cursor_type is TABLE OF my_cursor_type%ROWTYPE INDEX BY BINARY INTEGER;
my_cur my_cursor_type;
TYPE table_type IS TABLE OF table_name%ROW_TYPE INDEX BY BINARY INTEGER;
table_obj table_type;
begin
open my_cursor;
loop
fetch my_cursor bulk collect
into my_cur limit 5000;
exit when my_cursor%notfound;
for i in 1 .. my_cur.count loop
table_obj(i).first_column := my_cur(i).first_column;
table_obj(i).second_column := my_cur(i).second_column;
table_obj(i).third_column := my_cur(i).third_column;
end loop;
end loop;
Close my_cursor;
……
现在在这些代码之后,我有了 table_obj,它有 100000 条记录。而这个表对象有first_column、second_column、third_column。
我在table_obj 中搜索一条记录的第三列。我知道first_column、second_column,我在table_obj 中搜索third_column。我必须从 table_obj 行中获取行。此搜索行具有我的 first_column、second_column 值。我从这一行得到了third_column_value。如何使用 plsql 从 table_obj 行中获取特定行?
解决方案
这可以通过将前两列转换为单个索引来完成。带有分隔符的连接最适合这种情况。分隔符应该是前两列中没有使用的字符。
DECLARE
CURSOR my_cursor
IS
SELECT first_column, second_column, third_column FROM table_name;
TYPE my_cursor_type IS TABLE OF my_cursor_type%ROWTYPE
INDEX BY BINARY_INTEGER;
my_cur my_cursor_type;
TYPE table_type IS TABLE OF table_name%ROWTYPE
INDEX BY BINARY_INTEGER;
table_obj table_type;
l_composite_idx VARCHAR2( 61 );
l_test_idx_1 VARCHAR2( 30 ) := 'Test1';
l_test_idx_2 VARCHAR2( 30 ) := 'Success';
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor BULK COLLECT INTO my_cur LIMIT 5000;
FOR i IN 1 .. my_cur.COUNT
LOOP
l_composite_idx := my_cur( i ).first_column || '&' || my_cur( i ).second_column;
table_obj( l_composite_idx ).first_column := my_cur( i ).first_column;
table_obj( l_composite_idx ).second_column := my_cur( i ).second_column;
table_obj( l_composite_idx ).third_column := my_cur( i ).third_column;
END LOOP;
EXIT WHEN my_cursor%NOTFOUND;
END LOOP;
CLOSE my_cursor;
-- You access a row in my_cur like this:
DBMS_OUTPUT.put_line( 'Result: ' || table_obj( l_test_idx_1 || '&' || l_test_idx_2 ) );
END;
希望这可以帮助!
推荐阅读
- mongodb - 无法连接到 Mongodb 端口 27017
- php - 打开文件的函数
- javascript - 使用 JavaScript 创建动态引导切换
- javascript - 在 reactjs 中首次运行时在控制台上获取空对象
- html - 如何在文本框和我在 boostrap 中创建的 html 表单之间添加空格?
- ios - 如何在 iOS Swift 中获取数字的顶部和底部数字?
- python - 生成元素总和固定的非负整数数组
- html - 如何删除焦点按钮文本周围的虚线白色边框
- visual-studio - Visual Studio 截断测试详细信息摘要窗口中的消息
- java - 如何使用json将包含多个对象的json文件转换为java对象列表