Печать заголовка для PL SQL - PullRequest
0 голосов
/ 03 мая 2020

У меня есть следующее SQL Код процедуры:

create or replace procedure numOfSupplier(X IN NUMBER)IS
OUTPUT VARCHAR(500);

BEGIN 

    FOR supplerTable IN (SELECT R_NAME, N_NAME
    FROM SUPPLIER join NATION on S_NATIONKEY = N_NATIONKEY
    join REGION on N_REGIONKEY = R_REGIONKEY
    GROUP BY R_NAME, N_NAME
    HAVING COUNT (S_NATIONKEY) > X)

LOOP

DBMS_OUTPUT.PUT_LINE (supplerTable.R_NAME || supplerTable.N_NAME);

END LOOP;

END numOfSupplier;
/

При запуске дает мне: https://i.imgur.com/zEEKpya.png

Я пытаюсь получить это show: https://i.imgur.com/7fvAc6O.png

Есть идеи, как распечатать заголовок?

DBMS_OUTPUT.PUT_LINE кажется ограниченным

Заранее спасибо!

PS, я пытался получить DBMS_OUTPUT.PUT_LINE до l oop, но он выдал ошибку:

12/1 PLS-00103: Обнаружен символ "DBMS_OUTPUT" при ожидании одного из следующих действий: цикл Символ «l oop» был заменен на «DBMS_OUTPUT» для продолжения.

20/5 PLS-00103: Обнаружен символ «NUMOFSUPPLIER» при ожидании одного из следующего: l oop

Ошибка при попытке:

OUTPUT VARCHAR(500);

BEGIN 

    FOR supplerTable IN (SELECT R_NAME, N_NAME
    FROM SUPPLIER join NATION on S_NATIONKEY = N_NATIONKEY
    join REGION on N_REGIONKEY = R_REGIONKEY
    GROUP BY R_NAME, N_NAME
    HAVING COUNT (S_NATIONKEY) > X)

DBMS_OUTPUT.PUT_LINE ('HELLO');

LOOP

DBMS_OUTPUT.PUT_LINE (supplerTable.R_NAME || supplerTable.N_NAME);

END LOOP;

END numOfSupplier;
/

1 Ответ

0 голосов
/ 03 мая 2020

Вы не можете поместить DBMS_OUTPUT.PUT_LINE в середину заголовка l oop. Вы должны положить его полностью до l oop.

...
DBMS_OUTPUT.PUT_LINE ('<The header goes here>');

FOR supplerTable IN (...) LOOP
  DBMS_OUTPUT.PUT_LINE (supplerTable.R_NAME || supplerTable.N_NAME);
END LOOP;
...
...