向 pl/sql 的输出添加标题

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

我试图在 pl/sql 脚本中的输出中添加标题 CIDGEN 和 NATION,但无法弄清楚。

下面是我的 pl/sql 脚本:

DECLARE
    v_concat VARCHAR2(2000);
    v_nation VARCHAR2(2000);
    err_msg  varchar2(300);
    v_header_printed BOOLEAN := FALSE;

BEGIN

v_nation := NULL;

  FOR ID in 1..p_nations.count
  LOOP
    v_nation := p_nations(ID);

        FOR rec IN (
        SELECT B.CIDGEN, B.NATION
        FROM COMPANY B
        JOIN NATION_LOOKUP C ON B.NATION = C.CODE
        WHERE B.CIDGEN IN (
            SELECT CIDGEN
            FROM RAN.OA_REQUEST_RESPONSE_STATUS
            WHERE RESPONSE_STATUS = 'FailedRequest'
            AND RESPONSE_UPDATE_STAMP >= TO_DATE(p_lastrundate, 'DD-MON-YYYY HH24:MI:SS')
        )
        AND B.NATION = v_nation
       ) LOOP
           IF NOT v_header_printed THEN
              DBMS_OUTPUT.PUT_LINE('CIDGEN' || '||' || 'NATION');
              v_header_printed := TRUE;
           END IF;
           DBMS_OUTPUT.PUT_LINE(rec.CIDGEN || '||' || rec.NATION);
    END LOOP;
   END LOOP;

EXCEPTION
    WHEN OTHERS THEN
        err_msg := SUBSTR(SQLERRM, 1, 200);
        DBMS_OUTPUT.PUT_LINE('Exception caught: ' || err_msg);
END;
/

exit

但是我尝试添加

           IF NOT v_header_printed THEN DBMS_OUTPUT.PUT_LINE('CIDGEN' || '||' || 'NATION'); v_header_printed := TRUE; END IF;
在我的块中,但无法在我的输出中打印标题 CIDGEN NATION。

我得到的输出如下:

1054958001||AN 1678359002||AN 1568893001||AN

我期待它的到来:

CIDGEN||NATION 1054958001||AN 1678359002||AN 1568893001||AN

sql oracle plsql
1个回答
0
投票

您真的需要检查标题是否已打印吗?为什么你不把它放在循环的out中呢?

FOR ID IN 1 .. p_nations.count LOOP

  DBMS_OUTPUT.put_line('CIDGEN' || '||' || 'NATION');     --> here

  FOR rec IN (select ... FROM comapny ...) LOOP
    DBMS_OUTPUT.put_line(rec.CIDGEN || '||' || rec.NATION);
  END LOOP;

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