Oracle 为什么我得到ORA:0922错误:缺少或无效选项

Oracle 为什么我得到ORA:0922错误:缺少或无效选项,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,以下程序有什么问题??我已经检查了代码的语法错误,但找不到语法错误 CREATE OR REPLACE Edit_premium_amt ( policy_number IN number(4), new_premium_type IN varchar2(4) ) IS discount_amount number(6,2); premium_amts number(11,2); policy_amts

以下程序有什么问题??我已经检查了代码的语法错误,但找不到语法错误

CREATE OR REPLACE Edit_premium_amt
    (
      policy_number IN number(4),
      new_premium_type  IN varchar2(4)
    )

    IS

    discount_amount number(6,2);
    premium_amts    number(11,2);
    policy_amts     number(11);
    dur             number(5);
    prem_type       varchar2(4);
    disc_weigh      varchar2(2);
    disc_perc       number(2);
    prem_type_int   number(2,1);

    BEGIN

    prem_type:=new_premium_type;

    UPDATE policy SET premium_type=new_premium_type WHERE policy_id=policy_number;

    SELECT policy_amt,duration INTO policy_amts,dur WHERE policy_id=policy_number;

    SELECT disc_weightage INTO disc_weigh FROM disc_details WHERE duration=dur;

    SELECT percent INTO disc_perc FROM disc_calculation WHERE premium_type=prem_type AND 

    weightage=disc_weigh;

    CASE prem_type

        WHEN 'HY' THEN prem_type_int:=2.0;
        WHEN 'Y' THEN prem_type_int:=1.0;

    ELSE  prem_type_int:=0.5;
    END CASE;

    discount_amount:= ((policy_amts)/dur)/prem_type_int))*disc_perc;

    premium_amts:=policy_amts-discount_amount;

    UPDATE policy SET premium_amt=premium_amts
    WHERE policy_id=policy_number;

END Edit_premium_amt;

您必须说出您正在创建或替换的内容


在这种情况下,
创建或更换程序编辑\u premium\u amt………

weightage=disc\u weight不是赋值,而是相等性测试。你忘了带分号。另外,欢迎来到堆栈溢出。在发帖时,请务必包含完整的错误。Oracle应该给你一个行号来识别这个错误。我是说上面的冒号。。。另外,仔细看,您不需要分号来结束案例陈述的THEN子句。我已经更正了分号。但我仍然得到相同的错误。我得到的是最终错误“ORA-00922:缺少或无效选项”。。它没有给出任何行号。请告诉我是否有任何方法可以在错误信息中启用。我使用的是oracle 10g XE.weightage=disc\u weight;它实际上只是一个比较,而不是赋值。它是一个create语句。但我一直使用相同的语法。i、 e.创建或替换。选择保单金额、持续时间到保单金额、期间,其中保单id=保单编号;没有where子句。。找到解决办法了吗