2017-02-19 45 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 

Пожалуйста, сообщите, что будет для этого кодом? ТИА.

ответ

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 Можете ли вы попробовать скопировать этот вывод и вставить в редактор, скажем, «Блокнот ++»? Если он сработает, он должен выглядеть правильно отформатированным. Если нет, тогда нам нужно найти способ получить символы новой строки в инструкции select. –

+0

SALARY: 800 $ ER: 7369 EMPLOYEE NAME: SMITH Query отображает что-то подобное, даже в блокноте ++ – TrueDroider