我想將金額引數宣告為型別 NUMBER(9,2); 為什么這個 Oracle PL/SQL 程序不起作用?
CREATE OR REPLACE PROCEDURE spupdate_price_by_cat(amount IN NUMBER(9, 2))AS
BEGIN
END;
/
當我運行它時,我得到錯誤:
在期望以下之一時遇到符號“(”: := . ) ,@ % 默認字符。符號“:=”被替換為“(”以繼續。
uj5u.com熱心網友回復:
您不能NUMBER在 PL/SQL 函式或程序的簽名中宣告具有比例和精度的資料型別。
要么使用NUMBER:
CREATE OR REPLACE PROCEDURE spupdate_price_by_cat(
amount IN NUMBER
)
AS
BEGIN
NULL;
END;
/
或者使用%TYPE宣告來宣告它與表的列具有相同的資料型別(但它仍然不尊重簽名中列的比例和精度):
CREATE OR REPLACE PROCEDURE spupdate_price_by_cat(
amount IN table_name.column_name%TYPE
)
AS
BEGIN
NULL;
END;
/
如果您想在 PL/SQL 變數中強制執行特定的比例和精度,請在程序中本地宣告它:
CREATE OR REPLACE PROCEDURE spupdate_price_by_cat(
amount IN table_name.column_name%TYPE
)
AS
v_amount1 NUMBER(9,2) := amount;
v_amount2 table_name.column_name%TYPE := amount;
BEGIN
DBMS_OUTPUT.PUT_LINE(v_amount1);
END;
/
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497747.html
上一篇:從sql中檢索JSON
下一篇:oracle如何查詢
