簡體   English   中英

為什么我的PL / SQL過程編譯時出現錯誤

[英]Why is my PL/SQL Procedure compiling with Errors

在此代碼塊上工作了3天。 兩次閱讀有關過程的書,這並沒有太大幫助。 沒有任何參考代碼塊作為示例。 這些顯然是完成這些步驟的完美示例。 無論哪種方式,我都希望有人評論我的代碼並告訴我為什么它無法編譯。

我想做的是使用(IN和OUT參數)驗證付款信息,並接受一個I​​D,並返回三個值(捐贈金額,迄今為止的捐贈總額(如果已按時支付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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM