[英]Why is my PL/SQL Procedure compiling with Errors
在此代碼塊上工作了3天。 兩次閱讀有關過程的書,這並沒有太大幫助。 沒有任何參考代碼塊作為示例。 這些顯然是完成這些步驟的完美示例。 無論哪種方式,我都希望有人評論我的代碼並告訴我為什么它無法編譯。
我想做的是使用(IN和OUT參數)驗證付款信息,並接受一個ID,並返回三個值(捐贈金額,迄今為止的捐贈總額(如果已按時支付12個月)以及余額。 希望有人能夠幫助我。 我已經閱讀了Oracle文檔站點,但仍然對這些過程一無所知。
我的代碼:
CREATE OR REPLACE PROCEDURE DDCKBAL_SP
(pl_id IN dd_pledge.idpledge%TYPE,
pl_amount OUT NUMBER,
pay_to_date OUT NUMBER,
p_balance OUT NUMBER)
IS
pay_amount dd_payment.payamt%TYPE; --variable to calculate pay
pay_months dd_pledge.paymonths%TYPE; --variable for calculations
BEGIN
SELECT pledgeamt, pay_amount --Edited here
INTO pl_amount, pay_to_date --Edits here
FROM dd_pledge
WHERE idpledge = pl_id;
IF pay_months = 0 THEN
pay_to_date := pl_amount;
ELSE pay_to_date := pl_amount *(pl_amount/pay_months);
p_balance := pl_amount - pay_to_date;
END IF;
END DDCKBAL_SP;
/* The above now compiles, however when I run a test I receive the total
amount pledged but nothing for paid_to_date (if pledge was for 1200
over 12 payments wouldn't it be $20 a month up to current date?
I'm not receiving output for balance either...Starting to get the hang
of this but still need a bit of help with explanations */
&
是用於SQL Plus替換功能的,其中應用程序在將值發送到Oracle服務器之前提示您輸入值。 您正在尋找變量綁定,並且帶有:
。
例如, 從Oracle文檔中 : http : //docs.oracle.com/cd/B10501_01/appdev.920/a96584/oci05bnd.htm
您可能還不需要綁定,但是您需要轉儲&
。
CREATE OR REPLACE PROCEDURE procOneINOUTParameter(genericParam IN OUT VARCHAR2)
IS
BEGIN
genericParam := 'Hello World INOUT parameter ' || genericParam;
END;
如果您想了解綁定變量, 請看這里 。 它可以讓您節省解析的時間,但是現在我認為考慮起來比您需要的要復雜得多。
綁定變量允許多次重復使用一條SQL語句(無論是查詢還是DML),從而有助於提高安全性(通過禁止SQL注入攻擊)和性能(通過減少所需的分析量)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.