arrays - PLSQL中数组中的不同值
问题描述
我想将表中存在的列中的不同值存储到数组中。我得到以下错误。我怎样才能做到这一点?
select count(distinct(Name)) into n from table;
create or replace type array_type is varray(100) of varchar2(20);
for i in 1 .. n loop
name_array.extend;
select distinct(Name) into name_array(i) from table order by name asc;
end loop;
Error :
ORA-01422: exact fetch returns more than requested number of rows
桌子 :
解决方案
您可以SELECT DISTINCT value BULK COLLECT INTO
获取不同的值并将它们存储到集合中。
尝试:
CREATE TABLE test_table (
name VARCHAR2(20),
city VARCHAR2(250)
);
INSERT INTO test_table (name, city) VALUES ('A', 'X');
INSERT INTO test_table (name, city) VALUES ('B', 'Y');
INSERT INTO test_table (name, city) VALUES ('A', 'Z');
INSERT INTO test_table (name, city) VALUES ('C', 'K');
INSERT INTO test_table (name, city) VALUES ('D', 'P');
INSERT INTO test_table (name, city) VALUES ('A', 'Q');
INSERT INTO test_table (name, city) VALUES ('D', 'R');
INSERT INTO test_table (name, city) VALUES ('C', 'S');
COMMIT;
CREATE OR REPLACE TYPE array_type IS VARRAY(100) OF VARCHAR2(20);
DECLARE
v_name_array array_type := array_type();
BEGIN
SELECT DISTINCT NAME
BULK COLLECT
INTO v_name_array
FROM test_table
ORDER BY NAME ASC;
-- Show resulting values in collection
FOR i IN 1 .. v_name_array.count
LOOP
dbms_output.put_line(v_name_array(i));
END LOOP;
END;
/
推荐阅读
- web-component - 开发具有外部依赖关系的 Web 组件?
- javascript - 如何从 JSON 中的第二个对象获取数字数据?
- python - 如何使用循环有效地计算每秒的比特/字节?
- android - 按下后,警报对话框在很短的时间内可见,并且应用程序关闭。如何解决这个问题呢
- php - 将第一个数组的特定键和值合并到第二个数组中
- python - 传递给 `np.ones` 的参数是什么,它在这里是如何工作的?
- html - 奇怪的子导航按钮错误
- jquery - 单击数据表行时如何打开部分视图模式?
- mysql - MySQL主键设计
- angular - 使用 `forRoot()` 和 `InjectionToken` 和 angular5 添加库配置