sql - 如何将 SELECT 查询的结果表存储在变量中?

标签 sql oracle

假设我有以下查询,它返回一个过滤表:

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/

相关文章:

Oracle 使用多个 WHERE 子句更新单个表

SQL查询添加包含空值的两列的值?

sql - Rails 中多个 named_scope 的预加载计数

mysql - 在一个 SQL 语句中连接多个 select 语句

oracle - Mysql Workbench 将 sql 导出到 Oracle 11

sql oracle 当前月份

mysql - 除了某些列之外,如何进行 LEFT OUTER JOIN?

c# - 持久化 bool 逻辑

oracle - Oracle DDL 上的 Liquibase 幂等性

c# - 如何使用 odp.net 托管客户端为 sdo_geometry 和 oracle udt 编写 c# 自定义类