繁体   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