select * from EAB.S_KHXX;在pl/sql developer中单独查询可以用的.但是我在存储过程中用到
insert into table1 (a)
select a from t_org_dealer , EAB.S_KHXX
where .....他却说我这个EAB.S_KHXX没有定义.具体出错信息如下:
Error: PL/SQL: SQL Statement ignored
Line: 155
Text: INSERT INTO T_CUST_CUSTOMERError: PLS-00201: 必须说明标识符 'EAB.S_KHXX'
Line: 208
Text: FROM T_CUST_CUSTOMER,EAB.S_KHXX

解决方案 »

  1.   

    把完整的SQL和表结构贴出来看看
      

  2.   

    delete from T_CAR_STORE where dealerno = strDealerNo;
    /*0 接车;1 查定;2 收购;3 整修;4 复核;5 认证;6 销售*/
    INSERT INTO T_CAR_STORE
      (STOREIDID,
       CARID,
       CATTYPESETID,
       DEALERNO,
       BUYUPNO,
       VIN,
       PLACE,
       CANO,
       EGNO,
       DISPLACEMENT,
       RUNNING_MP,
       COLOR,
       PRODUCTION_DATE,
       FIRST_REGISTER_DATE,
       CAR_REMARK,
       CAR_CATEGORIZE, /*0:未分类1:转售车2:预许可3:预认证4:许可车5:待认证 6:认证车*/
       STORE_STATUS, /*0:在库1:已售出*/
       CHECK_STATUS, /*0:未检测 1:检测通过(第一次检测就通过的)2:整备通过3:未通过(未整备)4:未通过(整备中)*/
       CONFIRM_STATUS, /*0:未申请1:审核中2:驳回3:审核已通过*/
       ALLOW_OR_CERTIFICATE, /*0:许可1:认证*/
       REMARK,
       INCARNO,
       INCARTIME,
       CUSERID,
       CDATE,
       MUSERID,
       MDATE,
       STATUS)
      SELECT SEQ_STORE.NEXTVAL,
             A.SGLSH,
             d.CATTYPESETID  ,  
             A.ZYDBM,
             A.SGLSH,
             A.VIN,
             B.CD,
             B.CPH,
             B.FDJH,
             B.FDJPL,
             C.DJLC,
             B.CSYS,
             B.SCRQ,
             B.SPRQ,
             ' ' CAR_REMARK,
             DECODE(C.ZT, '2', '0', '3', '0', '4', '0', '5', '6', '6', '0') CAR_CATEGORIZE,
             DECODE(C.ZT, '2', '0', '3', '0', '4', '0', '5', '0', '6', '1') STORE_STATUS,
             DECODE(C.ZT, '2', '0', '3', '4', '4', '2', '5', '1', '6', '1') CHECK_STATUS,
             DECODE(C.ZT, '2', '0', '3', '0', '4', '0', '5', '3', '6', '0') CONFIRM_STATUS,
             DECODE(C.ZT, '2', '', '3', '', '4', '', '5', '1', '6', '') ALLOW_OR_CERTIFICATE,
             '' REMARK,
             A.HTBH,
             A.CZSJ,
             '1',
             SYSDATE,
             '',
             '',
             '1'
        FROM EAB.x_Sght A, EAB.S_ZCXX B, EAB.D_RSCDJ C , t_car_cattypeset d
       WHERE  A.VIN = B.VIN  and d.cartype = b.cx and d.status = 1 
        AND A.VIN = C.VIN 
        and a.zydbm = b.zydbm 
        and a.sglsh = c.sglsh   and a.zydbm = c.zydbm
        AND C.ZT NOT IN ('0', '1')  AND A.ZT  = '0' 
        and a.zydbm = strDealerNo ;这是完整的SQL,在cmd中运行是不会出错的.超级郁闷.作程序这么多年了,第一次遇上这个问题
      

  3.   

    SQLPlus等运行的 select 是根据你login的user的角色赋予权限的。
    所以你得SQL是正确的。
    但是到了PLsql中,角色赋予的权限就全部无效了。你必须对已用来执行PLSQL的那个User直接赋予访问EAB.S_KHXX的权限。
      

  4.   

    在存储过程里,必须单独grant权限,不能grant role,不会生效的