日期:2014-05-17  浏览次数:20759 次

一个ORACLE的SQL错误?
在过程里调用输入参数时,应该怎么用,如果参数是字符串类型的,像如下我写的过程,会报下面的错误,应该怎么改呢?


CREATE   OR   REPLACE   Procedure   update_product_price1   (
  v_NAME   In   Varchar2(20),
  p_factor   In   Number
)   As

v_product_count   Integer;
Begin
    Select   Count(1)   Into   v_product_count   From   products   Where   Name   =   v_NAME;
    If   v_product_count   >   0   Then
        Update   products
        Set   price   =   price   *   p_factor
        Where   Name   =   v_NAME;
        Commit;
    End   If;
    Exception
      When   Others   Then
      dbms_output.put_line( '没有这个产品! ');


End   update_product_price1;
/

--报的错:
LINE/COL   ERROR
--------   ---------------------------------------------------------------------------------------------------------------------------
2/20           PLS-00103:   出现符号   "( "在需要下列之一时:       :=   .   )   ,   @   %   default           character     符号   ":= "   被替换为   "( "   后继续。    
7/65           PLS-00103:   出现符号   "= "在需要下列之一时:       .   (   *   @   %   &   =   -   +   ;   <   /   >   at           for   in   is   mod   not   rem   <an   exponent   (**)>   <>   or   !=   or   ~=   > =   <=           <>   and   or   like   between   group   having   intersect   minus   order           start   union   where   connect   ||     符号   ".在   "= "   继续之前已插入。    


------解决方案--------------------
把声明中“CREATE OR REPLACE Procedure update_product_price1 (
v_NAME In Varchar2(20),
p_factor In Number
) As”的“Varchar2(20)”改为Varchar2就应该对了,还有,这个“As”也应该改成“is”吧?不过好像“AS”“IS”都行。