【问题标题】:Printing header for PL SQL ProcedurePL SQL 过程的打印标题
【发布时间】:2020-05-03 04:16:08
【问题描述】:

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

知道如何打印标题吗?

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 打印标题?
  • 我试过了,出错了,但似乎每个程序只能有 1 个 DBMS_OUTPUT.PUT_LINE? ----------- 12/1 PLS-00103:在预期以下情况之一时遇到符号“DBMS_OUTPUT”:循环符号“循环”被替换为“DBMS_OUTPUT”以继续。 ///////// 20/5 PLS-00103:在预期以下情况之一时遇到符号“NUMOFSUPPLIER”:循环
  • "但您似乎只能拥有 1 个 DBMS_OUTPUT.PUT_LINE" -- 不,您一定是搞错了。可能会显示您尝试过的代码。
  • 我已经更新了原帖,非常感谢您的帮助!

标签: sql stored-procedures procedure stored-functions


【解决方案1】:

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

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

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

【讨论】:

  • 我做到了!我的 DBMS_OUTPUT.PUT_LINE ('HELLO') 在循环之前; - i.imgur.com/xarej0o.png 这是返回错误!
  • @CharlotteE:不,你没有。你把它放在LOOP 关键字之前,但这不是FOR 循环开始的地方。它以 FOR 关键字开头。你有试过我的建议吗?
  • @CharlotteE:查看我的编辑。也许这样可以更清楚地把它放在哪里。另请注意,您可能有错字,supplerTable 应该是supploerTable。但这与其他问题无关。
  • 是的!很抱歉给你添麻烦了,刚开始学习PL Procedures/Functions 所以上一个不清楚!感谢您的帮助,注意安全
猜你喜欢
  • 1970-01-01
  • 2012-07-27
  • 2011-08-14
  • 2020-07-02
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多