【发布时间】:2014-04-22 01:08:03
【问题描述】:
当我运行我的脚本时,当它询问“付款方式是否为现金 (Y/N)?”时,我输入 N但它仍然执行 IF 下的语句...为什么会这样?
ACCEPT ExpNum NUMBER PROMPT 'Enter an expense number: ';
SELECT *
FROM ExpByCC
WHERE ExpNum = &ExpNum;
SELECT IsCash,CashAmt
FROM EXPMAST
WHERE ExpNum = &ExpNum
AND IsCash = 'Y';
ACCEPT CashChoice PROMPT 'Will the payment method be cash (Y/N)? ';
DECLARE
ChoiceCash VARCHAR2(1);
NumRowInExpByCC NUMBER;
BEGIN
ChoiceCash := &CashChoice;
IF ChoiceCash = 'Y'
THEN
UPDATE EXPMAST
SET IsCash = ChoiceCash,
CashAmt = &CashAmount
WHERE ExpNum = &ExpNum;
COMMIT;
ELSE
&CType;
&CCnum;
&Amt;
END IF;
END;
/
【问题讨论】:
-
你的输出是什么?代码看起来不错。您可以反转 if 条件以避免 = vs == 混淆,但它不应该改变任何事情。
-
SQL> @addexpPay.sql 输入费用编号:1 旧 3:WHERE ExpNum = &ExpNum 新 3:WHERE ExpNum = 1 未选择行旧 3:WHERE ExpNum = &ExpNum 新 3:WHERE ExpNum = 1 I CASHAMT - ---------- Y 10.5 付款方式是现金(Y/N)吗? N 输入现金金额:
-
可能难以阅读,但我输入 N 仍然运行第一个 if
标签: oracle if-statement plsql sqlplus