从数据库中查出两列数据,返回的是一个hashmap,怎么把其中的一列作为显示值一列作为value,数据库是oracle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从数据库中查出两列数据,返回的是一个hashmap,怎么把其中的一列作为显示值一列作为value,数据库是oracle相关的知识,希望对你有一定的参考价值。

select alarm_ID,t.alarm_type from T_ALARM_CONFIG t group by alarm_ID,t.alarm_type这个是sql语句,使用struct2开发在jsp页面呈现
数据是使用sqlmap取出来的

参考技术A map.entrySet()方法; 可以得到Set<Map.Entry> 的对象,利用迭代,每个对象都有getKey,和getValue方法本回答被提问者采纳 参考技术B 1:规范的话就写bean对象,循环读取数据库,每一行数据就创建一个对象,然后将对象存到List集合中,然后到Jsp显示
2:使用xml文件传递数据
3:使用字符串分割。例如数据库中的数据,显示值#value = 姓名#张三。每行拼成一个这样的String对象,然后存到List集合里,然后到Jsp取出来分割,再展示追问

我是直接使用sqlmap获取数据的,要怎么做到循环读取。我这边返回的都是执行完语句后所得到的是数据表中的所有数据

参考技术C 使用struts2的select标签
<s:select list="maptest" listKey="key" listValue="value"></s:select>
参考技术D 先将结果集查分,封装成想要的格式。在操作。 第5个回答  2012-07-03 把你封装的对象传到session中

SQL 过程可以返回一个表吗?

【中文标题】SQL 过程可以返回一个表吗?【英文标题】:Can an SQL procedure return a table? 【发布时间】:2012-11-20 08:14:28 【问题描述】:

Oracle 我目前正在使用dbms_output 打印出循环中的两个游标的输出,尽管如果它返回两列会更好看。这可能在一个程序中实现吗?

【问题讨论】:

你用的是什么数据库? 您如何使用该程序?您可以通过 SYS_REFCURSOR 数据类型的 OUT 参数从游标返回结果集,但您的客户端需要支持读取结果集。 asktom.oracle.com/pls/asktom/… 【参考方案1】:

PL/SQL 函数可以返回嵌套表。如果我们将嵌套表声明为 SQL 类型,我们可以将其用作查询源,使用 the TABLE() function。

这是一个类型,以及一个由它构建的嵌套表:

SQL> create or replace type emp_dets as object (
  2  empno number,
  3  ename varchar2(30),
  4  job varchar2(20));
  5  /

Type created.

SQL> create or replace type emp_dets_nt as table of emp_dets;
  2  /

Type created.

SQL> 

这是一个返回嵌套表的函数...

create or replace function get_emp_dets (p_dno in emp.deptno%type)
    return emp_dets_nt
is
    return_value emp_dets_nt;
begin
    select emp_dets(empno, ename, job)
    bulk collect into return_value
    from emp
    where deptno = p_dno;
    return return_value;
end;
/

...这就是它的工作原理:

SQL> select * 
  2  from table(get_emp_dets(10))
  3  /

     EMPNO ENAME                          JOB
---------- ------------------------------ --------------------
      7782 CLARK                          MANAGER
      7839 KING                           PRESIDENT
      7934 MILLER                         CLERK

SQL> 

SQL 类型为我们提供了大量功能,并允许我们在 PL/SQL 中构建相当复杂的 API。 Find out more.

【讨论】:

【参考方案2】:

我认为您可以为此使用 Oracle Cursor(如果您的 Oracle 版本支持):

PROCEDURE myprocedure(
    mycursor OUT SYS_REFCURSOR )
AS
BEGIN
  OPEN mycursor FOR SELECT * FROM mytable;
END;
END;

【讨论】:

【参考方案3】:

这也可能有帮助:

DECLARE
  TYPE t_emptbl IS TABLE OF scott.emp%rowtype;
  v_emptbl t_emptbl; 
  ret_val  t_emptbl; 
  --
  Function getEmployeeList Return t_emptbl 
  IS
  BEGIN
    SELECT * bulk collect INTO v_emptbl FROM scott.emp;
    -- Print nested table of records:
    FOR i IN 1 .. v_emptbl.COUNT LOOP
      DBMS_OUTPUT.PUT_LINE (v_emptbl(i).empno);
    END LOOP;
    RETURN v_emptbl;
  END;
  --
  BEGIN
    ret_val:= getEmployeeList;
  END;
  /

【讨论】:

以上是关于从数据库中查出两列数据,返回的是一个hashmap,怎么把其中的一列作为显示值一列作为value,数据库是oracle的主要内容,如果未能解决你的问题,请参考以下文章

sql怎么查询出两列字段相同的数据(在忽略英文大小写和空格的情况下)

SQL查同一个字段输出两列?

SQL查出的字段一列分成两列

Mybatis 将数据库中查出的记录,一对多返回,即分组,然后返回每个组的所有数据

Django中自定义过滤器的使用

008商城项目:商品列表查询-查出商品并且分页