无输出,仅显示“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 过程已成功完成”的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 PL/SQL 在 CMD 中打印结果

PL/SQL连接Oracle数据库,中文乱码,显示问号

PL SQL 输出未显示

Joomla 组件输出 - 仅模板 - 无默认站点骨架

如何在匿名 PL/SQL 块中自动显示所有 SQL 语句的输出

在 pl/sql 中使用嵌套循环但未显示正确的输出