DECLARE
V_CNT NUMBER :=0;
BEGIN 
 V_SQL:= 'SELECT COUNT(*) INTO V_CNT1
     FROM ZB_SRC.ZB_D_BIDWMB05007_'||V_PROV||' WHERE MONTH_ID=''201109'' AND DAY_ID=''01'' AND ROWNUM<10';
 EXECUTE IMMEDIATE V_SQL;
END;
报错 ORA-00905: missing keyword
求达人解答 多谢

解决方案 »

  1.   

    把“V_CNT NUMBER :=0;”改成“V_CNT NUMBER default 0;”
      

  2.   

    DECLARE
    V_CNT NUMBER :=0;
    BEGIN  
     V_SQL:= 'SELECT COUNT(*) 
      FROM ZB_SRC.ZB_D_BIDWMB05007_'||V_PROV||' WHERE MONTH_ID=''201109'' AND DAY_ID=''01'' AND ROWNUM<10';
     EXECUTE IMMEDIATE V_SQL into V_CNT ;
    END;
      

  3.   

    DECLARE
    V_CNT NUMBER :=0;
    BEGIN  
      ELECT COUNT(*) INTO V_CNT
      FROM ZB_SRC.ZB_D_BIDWMB05007_'||V_PROV||' WHERE MONTH_ID=''201109'' AND DAY_ID=''01'' AND ROWNUM<10;
    END;
      

  4.   

    select count(*) INTO V_CNT1
    去掉 INTO V_CNT1EXECUTE IMMEDIATE V_SQL INTO V_CNT1;
      

  5.   

    同意2楼。把into从动态SQL里拿出来。放到下面。
      

  6.   

     
    1 、前面声明的的是 V_CNT  ,动态语句中是 V_CNT1 ;
    2、 动态语句中的变量 V_CNT  引用不到你外部声明的变量 V_CNT 。 
    3、2楼正解。
    4、我认识你 。 我日啊。世界这么小。看到了离我最近的一个同事 。