不同行上的每一列都有一条记录SQL报告

时间:2017-02-19 14:03:50

标签: sql report sqlplus

我正在尝试为特定的表格制作一个类似于此的报告。

************************************************************
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。

1 个答案:

答案 0 :(得分: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;