【问题标题】:Every column on different line with one record SQL reports不同行的每一列都有一条记录 SQL 报告
【发布时间】:2017-02-19 14:03:49
【问题描述】:

我正在尝试为特定的表 emp 生成类似这样的报告。

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

【问题讨论】:

    标签: sql report sqlplus


    【解决方案1】:

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

    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;
    

    【讨论】:

    • 但是使用上面的 sql 语句,它并没有提供我想要的输出。它在一行中显示所有列和一条记录,然后递归地显示所有列。
    • @TrueDroider 您可以尝试复制该输出并粘贴到编辑器中,比如 Notepad++ 吗?如果它有效,它应该在那里显示正确的格式。如果没有,那么我们需要找到一种方法来获取 select 语句中的换行符。
    • SALARY : 800$ER : 7369 EMPLOYEE NAME : SMITH 查询显示类似这样的内容,即使在记事本++中也是如此
    • @TrueDroider 我最后一次尝试:使用光标和dbms_output.put_line()。如果这不起作用,您应该考虑将数据转储到文本编辑器中并从那里开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多