PL SQL过程的打印标题

问题描述 投票:0回答:1

我有以下SQL Procedure代码:

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

我正在尝试显示此节目:https://i.imgur.com/7fvAc6O.png

知道如何打印标题吗?

[DBMS_OUTPUT.PUT_LINE似乎受到限制

提前感谢!

PS,我尝试在循环之前使用DBMS_OUTPUT.PUT_LINE,但出错了:

12/1 PLS-00103:预期时遇到符号“ DBMS_OUTPUT”以下之一:环用符号“循环”代替“ DBMS_OUTPUT”继续。

20/5 PLS-00103:预期出现符号“ NUMOFSUPPLIER”以下之一:循环

尝试时出错:

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;
/
sql stored-procedures procedure stored-functions
1个回答
0
投票

您不能将DBMS_OUTPUT.PUT_LINE放在循环标题的中间。您必须将其完全放在循环之前。

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

FOR ... LOOP
...
© www.soinside.com 2019 - 2024. All rights reserved.