2017-02-19 47 views
1

我想为某个特定表emp做一个报告,像这样。不同行上的每一列有一条记录SQL报告

************************************************************ 
EMPLOYEE NUMBER : 1010 
EMPLOYEE NAME : SARAH 
JOB : DESIGNER 
SALARY : 10000$ 

************************************************************* 
EMPLOYEE NUMBER : 1011 
EMPLOYEE NAME : HANNAH 
JOB : DECORATOR 
SALARY : 20000$ 
************************************************************* 

但我不知道如何获得不同行上的每个列名称。

sql > break column on empname skip page 

上面的代码做了这样的事情。

EMPNO ENAME  JOB    SAL 
---------- ---------- --------- ---------- 
    7839 KING  PRESIDENT  5000 

EMPNO ENAME  JOB    SAL 
---------- ---------- --------- ---------- 
    7840 QUEEN  PRESIDENT  4000 

请推荐一下代码是什么? TIA。

回答

0

如果你只是想以这种格式在一些表示层的数据(例如文本编辑器),你可以简单地选择列连接在一起,用换行分隔:

DECLARE 
CURSOR cur IS 
    SELECT empno, ename, job, sal FROM yourTable; 

    v_empno yourTable.empno%INT; 
    v_ename yourTable.ename%VARCHAR2(100); 
    v_job yourTable.job%VARCHAR2(100); 
    v_sal yourTable.sal%NUMBER(10,4); 
BEGIN 
OPEN cur; 
LOOP 
    FETCH cur INTO v_empno, v_ename, v_job, v_sal 
    EXIT WHEN cur%NOTFOUND; 

    dbms_output.put_line('EMPLOYEE NUMBER : ' || v_empno || CHR(13) || 'EMPLOYEE NAME : ' 
         || v_ename || CHR(13) || 'JOB : ' || v_job || CHR(13) || 'SALARY : ' || 
         v_sal || '$' || CHR(13)); 
END LOOP; 
CLOSE cur; 
END; 
+0

但是,使用上面的SQL语句,它没有提供我想要的输出。它在一行中显示所有列和一条记录,然后递归地显示所有列。 – TrueDroider

+0

@TrueDroider你可以尝试复制输出并粘贴到编辑器中,比如Notepad ++吗?如果它有效,它应该在那里显示格式。如果没有,那么我们需要找到一种方法在select语句中获得换行符。 –

+0

工资:800 $ ER:7369员工姓名:SMITH 查询显示这样的事情,即使在记事本+ + – TrueDroider

相关问题