无输出,仅显示“PL/SQL 过程已成功完成”
Posted
技术标签:
【中文标题】无输出,仅显示“PL/SQL 过程已成功完成”【英文标题】:No output, just showing "PL/SQL procedure successfully completed" 【发布时间】:2019-07-21 16:04:01 【问题描述】:我正在从 3 个表中设置一个新游标,并在代码中循环。但经过一整天的尝试,没有错误,没有警告,但我的输出只是显示“PL/SQL 过程已成功完成。”,没有别的。
我尝试更改我的变量,SET SERVEROUTPUT ON、SET VERIFY OFF 等,但没有任何显示,就像我第一次尝试一样。
SET SERVEROUTPUT ON
DECLARE
V_PROD GD_INBAG%ROWTYPE;
V_OUT OUT_INBAG%ROWTYPE;
V_IN IN_INBAG%ROWTYPE;
V_NOMER NUMBER(8,0):=0;
CURSOR DATA_GUDANG IS
SELECT A.ID_PROD, A.NAMA_PROD, A.STOK_PROD, B.IN_PROD, C.OUT_PROD
FROM GD_INBAG A, IN_INBAG B, OUT_INBAG C
WHERE A.ID_PROD=B.ID_PROD AND A.ID_PROD=C.ID_PROD
ORDER BY A.ID_PROD;
BEGIN
OPEN DATA_GUDANG;
LOOP
FETCH DATA_GUDANG INTO V_PROD.ID_PROD, V_PROD.NAMA_PROD, `V_PROD.STOK_PROD, V_OUT.OUT_PROD, V_IN.IN_PROD;`
EXIT WHEN DATA_GUDANG%NOTFOUND;
V_NOMER :=V_NOMER+1;
DBMS_OUTPUT.PUT_LINE ('NUMBER : '||' '||V_NOMER);
DBMS_OUTPUT.PUT_LINE ('PRODUCT ID : '||' '||V_PROD.ID_PROD);
DBMS_OUTPUT.PUT_LINE ('PRODUCT NAME : '||' '||V_PROD.NAMA_PROD);
DBMS_OUTPUT.PUT_LINE ('STOCK : '||' '||V_PROD.STOK_PROD);
DBMS_OUTPUT.PUT_LINE ('OUT PRODUCT : '||' '||V_OUT.OUT_PROD);
DBMS_OUTPUT.PUT_LINE ('IN PRODUCT : '||' '||V_IN.IN_PROD);
DBMS_OUTPUT.PUT_LINE ('=========================================================');
END LOOP;
CLOSE DATA_GUDANG;
END;
我希望我的代码输出显示基于 ID_PROD 并按 ID_PROD 排序的所有数据(编号、ID、产品名称、库存、产品进出)。
【问题讨论】:
SQL Developer 有一个单独的 DBMS_OUTPUT 窗口。您需要选择菜单 View > DBMS_OUTPUT,然后为要显示的连接打开一个选项卡。你做到了吗? 您是从任何其他 PL/SQL 代码中获得 dbms_output,还是仅此特定代码有问题? @APC 那在哪里?我不知道,但是,如果我只编写与其他表没有关系的代码就好了,比如编写代码说“hello World”等。 @william 不,我做了一些程序和函数也需要 DBMS_OUTPUT.PUT_LINE,它很好,但是当我尝试做一些光标时,它不会显示输出跨度> 那么游标可能没有返回任何行。 【参考方案1】:您的光标似乎没有获取任何信息。
如果光标下方将打开,则将显示任何数据,否则将不显示任何结果
打开数据_古当;
环形
将 DATA_GUDANG 提取到 V_PROD.ID_PROD、V_PROD.NAMA_PROD、
V_PROD.STOK_PROD, V_OUT.OUT_PROD, V_IN.IN_PROD;
DATA_GUDANG%NOTFOUND 时退出;
V_NOMER :=V_NOMER+1;
DBMS_OUTPUT.PUT_LINE ('NUMBER : '||' '||V_NOMER);
DBMS_OUTPUT.PUT_LINE ('PRODUCT ID : '||'
'||V_PROD.ID_PROD);
DBMS_OUTPUT.PUT_LINE ('PRODUCT NAME : '||'.
'||V_PROD.NAMA_PROD);
DBMS_OUTPUT.PUT_LINE ('STOCK : '||'
'||V_PROD.STOK_PROD);
DBMS_OUTPUT.PUT_LINE ('OUT PRODUCT : '||'
'||V_OUT.OUT_PROD);
DBMS_OUTPUT.PUT_LINE ('IN PRODUCT : '||' '||V_IN.IN_PROD);
DBMS_OUTPUT.PUT_LINE
('=========================================================');
END LOOP;
CLOSE DATA_GUDANG;
END;
【讨论】:
以上是关于无输出,仅显示“PL/SQL 过程已成功完成”的主要内容,如果未能解决你的问题,请参考以下文章