【发布时间】:2021-12-01 12:08:59
【问题描述】:
我正在使用 Oracle SQL 开发人员制作 PL/SQL 代码。 我的代码是使用 DBMS_Output 中的数学公式来打印数据。 但是,以 DBMS_OUTPUT.PUT_LINE 开头的代码都是灰色的,并且不打印任何内容。 我已经通过单击视图 -> DBMS 输出 -> 加号 -> 连接到服务器来使用 DBMS 输出,所以我认为禁用的 DBMS 输出不是问题。 你能帮帮我吗?
DECLARE
type Receipt is record(
productID PRODUCTS.PRODUCTID%type,
productName PRODUCTS.PRODUCTNAME%type,
numOfProduct PRODUCTS.UNITSONORDER%type,
unitPrice PRODUCTS.UNITPRICE%type);
receipt Receipt;
BEGIN
select PRODUCTID,PRODUCTNAME, UNITSONORDER, UNITPRICE
into receipt
from PRODUCTS where PRODUCTID = 1;
DBMS_OUTPUT.PUT_LINE('Product ID : '|| receipt.productID);
DBMS_OUTPUT.PUT_LINE('Product Name : '|| receipt.productName);
DBMS_OUTPUT.PUT_LINE('Number of orders : '|| receipt.numOfProduct);
DBMS_OUTPUT.PUT_Line('Unit price : '|| receipt.unitPrice);
DBMS_OUTPUT.PUT_Line('sub-total'|| receipt.unitPrice);
DBMS_OUTPUT.PUT_Line('Taxes = '|| receipt.unitPrice*(13/100));
DBMS_OUTPUT.PUT_Line('Total Payment = '|| receipt.unitPrice*(13/100)+(receipt.unitPrice));
END;
【问题讨论】:
-
当您尝试运行该代码时,您应该会遇到许多语法错误。以
ORA-06550: line 7, column 9: PLS-00371: at most one declaration for 'RECEIPT' is permitted ORA-06550: line 7, column 9:开头 -
请注意对象名称中的大小写。 Oracle 名称不区分大小写 因此
receipt和Receipt是相同的并且引用相同的对象。 (在内部它们被折叠成大写。)。这就是导致重新定义 (PLS-00371: ) 错误的原因。