假设我有以下查询,它返回一个过滤表:
select column1,column2,column3 from table1 where table1.column1 = 'dada'
此外,假设我想将结果值存储在变量中,以便稍后使用结果。
我读到我可以像这样存储单个值:
declare:
result varchar(20);
begin:
select column1 into result from table1 where table1.column1 = 'dada';
end;
但是如果有多个值呢?似乎没有“TABLE”或“DICTIONARY”数据类型。
最佳答案
我认为你需要在oracle中使用集合。下面的代码可以帮助你。
示例代码:
CREATE TABLE example
("S_ID" NUMBER(1,0) ,
"S_NAME" VARCHAR2(8 CHAR)
);
Insert into example (S_ID,S_NAME) values (1,'A');
Insert into example (S_ID,S_NAME) values (1,'B');
Insert into example (S_ID,S_NAME) values (1,'C');
Insert into example (S_ID,S_NAME) values (2,'A');
Insert into example (S_ID,S_NAME) values (2,'B');
Insert into example (S_ID,S_NAME) values (2,'C');
Insert into example (S_ID,S_NAME) values (3,'A');
Insert into example (S_ID,S_NAME) values (3,'B');
commit;
DECLARE
TYPE type_name IS TABLE OF example%rowtype;
var_type_name type_name;
BEGIN
SELECT *
BULK COLLECT INTO var_type_name
FROM example;
for r in var_type_name.first..var_type_name.last loop
dbms_output.put_line(var_type_name(r).s_id||','||var_type_name(r).s_name);
end loop;
END;
帮助链接: https://blogs.oracle.com/oraclemagazine/working-with-collections
关于sql - 如何将 SELECT 查询的结果表存储在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51368189/