使用PL/SQL块打印文本和计算结果时,DBMS输出错误



我正在使用Oracle SQL开发人员制作PL/SQL代码。我的代码是通过在DBMS_Output中使用数学公式来打印数据。但是,以DBMS_OUTPUT开头的代码。PUT_LINE全是灰色的,不打印任何东西。我已经通过单击view ->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;

当您尝试运行此代码时,您应该得到一些语法错误,因为您不能声明记录类型receipt并声明局部变量receiptreceipt只允许申报一次。也许您来自区分大小写的编程语言,其中Receiptreceipt将是不同的标识符?

如果我们将类型声明更改为不同的标识符receipt_rec,那么您的代码大部分都可以编译。你只有一个问题最后dbms_output电话因为甲骨文认为你想添加的一切+左边的符号价值+右边的标志而不是做算术,然后连接字符串文本。我会将整个计算包在to_char中,但仅仅添加括号来强制执行您想要的操作顺序就足够了。通常,在单独的局部变量中进行数值计算并打印出该局部变量会更有意义。

DECLARE
type Receipt_rec is record(
productID PRODUCTS.PRODUCTID%type,
productName PRODUCTS.PRODUCTNAME%type,
numOfProduct PRODUCTS.UNITSONORDER%type,
unitPrice PRODUCTS.UNITPRICE%type);
receipt Receipt_rec;
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;
/

这里有一个dbfiddle

相关内容

  • 没有找到相关文章

最新更新