我正在使用 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;
uj5u.com熱心網友回復:
當您嘗試運行此代碼時,您應該會遇到許多語法錯誤,因為您無法宣告記錄型別receipt并宣告區域變數receipt。只receipt允許一個宣告。也許您來自一種區分大小寫的編程語言,其中Receipt和receipt將是不同的識別符號?
如果我們將型別宣告更改為不同的識別符號receipt_rec,那么您的代碼大部分都會編譯。您只是在最后一次dbms_output呼叫中遇到問題,因為 Oracle 認為您正在嘗試將 符號左側的所有內容添加到符號右側的值, 而不是進行算術運算,然后將其連接到字串文本。我to_char會將整個計算包裝在 a 中,但只需添加括號以強制您想要的操作順序就足夠了。通常,將數值計算放入一個單獨的區域變數并列印出該區域變數會更有意義。
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314318.html
