我试图在 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
您真的需要检查标题是否已打印吗?为什么你不把它放在循环的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;