我对Oracle很有点新,我想知道,如果我可以给update statement case
中的变量赋值。我可以为更新语句中的变量赋值吗?
我到目前为止这样的代码:
PROCEDURE insert_repayment_data_inst(
date_of_payment_l IN credit_mo_repayment.date_of_payment%TYPE,
amoount_to_pay_l IN credit_mo_repayment.ammount_to_pay%TYPE,
client_number_l IN credit_mo_repayment.client_number%TYPE,
is_paid_l IN credit_mo_repayment.is_paid%TYPE,
month_l IN credit_mo_repayment.is_paid%TYPE,
year_l IN credit_mo_repayment.is_paid%TYPE,
ending_balance_l IN credit_mo_repayment.ending_balance%TYPE,
tests IN credit_mo_repayment.ending_balance%TYPE
) AS
BEGIN
select monthly_installment into tests
from credit_mo_repayment
WHERE (to_char(date_of_payment, 'mm') = to_char(to_date(date_of_payment_l), 'mm'))
AND (to_char(date_of_payment, 'yy') = to_char(to_date(date_of_payment_l), 'yy'));
UPDATE credit_mo_repayment
SET
monthly_installment = CASE
WHEN (Monthly_installment - amoount_to_pay_l >= 0) THEN Monthly_installment - amoount_to_pay_l
WHEN (Monthly_installment - amoount_to_pay_l < 0) THEN 0
END,
ending_balance = CASE
WHEN (Monthly_installment - amoount_to_pay_l < 0) THEN ending_balance - ABS(Monthly_installment - amoount_to_pay_l) tests:= ending_balance - ABS(Monthly_installment - amoount_to_pay_l)
WHEN (Monthly_installment - amoount_to_pay_l >= 0) THEN ending_balance
END,
ammount_to_pay = ammount_to_pay + amoount_to_pay_l
WHERE (to_char(date_of_payment, 'mm') = to_char(to_date(date_of_payment_l), 'mm'))
AND (to_char(date_of_payment, 'yy') = to_char(to_date(date_of_payment_l), 'yy'));
END insert_repayment_data_inst;
正如你可以看到我试图将值赋给变量的情况下内部这样 tests:= ending_balance - ABS(Monthly_installment - amoount_to_pay_l)
但没有运气。
我也尝试将monthly_installment
的值分配给tests
变量,然后只是做数学,但我也没有运气。
select monthly_installment into tests
from credit_mo_repayment
WHERE (to_char(date_of_payment, 'mm') = to_char(to_date(date_of_payment_l), 'mm'))
AND (to_char(date_of_payment, 'yy') = to_char(to_date(date_of_payment_l), 'yy'));
我知道我在语法中缺少一些东西,但我无法发现它。
当您尝试选择测试时出了什么问题?错误信息? – Armunin
@Armunin'错误(683,3):PL/SQL:SQL Statement ignored','错误(683,35):PLS-00403:expression'TESTS'不能用作SELECT/FETCH语句的INTO目标','错误(684,3):PL/SQL:ORA-00904::invalid identifier' – Slim
您确定'tests'的类型正确吗? 'ending_balance'与'monthly_installment'的类型相同吗? – Armunin