繁体   English   中英

为 PL SQL 打印 header 程序

[英]Printing header for PL SQL Procedure

我有以下 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

我正在尝试这个节目: https://i.imgur.com/7fvAc6O.png

知道如何打印 header 吗?

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;
/

您不能将DBMS_OUTPUT.PUT_LINE放在循环 header 的中间。 你必须把它完全放在循环之前。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM