我是在拥有了system用户名的情况下,在XTDETAIL方案中创建了一个XTDETAMSALL_DETAIL_2这个表中,在all objects中可以看到我创建的表,但是在my objects中却看不到!
我写了一个存储过程,代码如下,这段代码在new->SQL Window中写入的时候,单击execute(F8)的时候是可以通过的,但是当在my objects下面的时候,右击该存储过程的时候竟然出现,表或视图不存在的错误提示,并且还有这样的错误:SQL Statement ignored错误
请问 是不是有用户的问题。之前的表就是在system作为用户名的情况下建立的,但是现在在my objects中却找不到!
请高手们帮我分析一下!
CREATE OR REPLACE PROCEDURE insert_update(p_upcode         in varchar2, --属装图号
                                          p_upname         in varchar2, --属装图名
                                          p_ditem          in number, --键号
                                          p_dcode          in varchar2, --图号
                                          p_dname          in varchar2, --图名
                                          p_dmaterial      in varchar2, --材料
                                          p_dweight        in number, --单重
                                          p_dtweight       in number, --总重
                                          p_dquantity      in number, --总数
                                          p_dre        in varchar2, --备注
                                          p_dother1        in varchar2, --工艺分工
                                          p_productdwgcode in varchar2, --所属产品 
                                          p_g1             in varchar2,
                                          p_g2             in varchar2, --领料单位 
                                          p_g3             in varchar2,
                                          p_g4             in varchar2,
                                          p_g5             in varchar2,
                                          p_g6             in varchar2,
                                          p_g7             in varchar2,
                                          p_g8             in varchar2,
                                          p_g9             in varchar2,
                                          p_xialiao        in varchar2, --下料尺寸
                                          p_dinge          in varchar2, --定额
                                          p_lldw           in varchar2, --领料单位
                                          p_d          in varchar2, --外购标记
                                          p_invcost        in number, --计划价
                                          p_dinvcost       in number, --计划总价
                                          p_cinvcode       in varchar2, --物料码
                                          p_invunit        in varchar2, --计量单位
                                          p_yongyou        in varchar2, --用友码
                                          p_changerate     in number, --转化率
                                          p_creator        in varchar2, --创建人
                                          p_createtime     in date, --创建日期
                                          p_modified       in varchar2, --修改人
                                          p_modifytime     in date --修改日期
                                          ) as
  num number;
begin
  select count(*)
    into num
    from XTDETAMSALL_DETAIL_2
   WHERE UPCODE = p_upcode
     and DITEM = p_ditem;
  if num <> 0 then
    update XTDETAMSALL_DETAIL_2
       set XIALIAO    = p_xialiao,
           DINGE      = p_dinge,
           LLDW       = p_lldw,
           DMARK      = p_d,
           INVCOST    = p_invcost,
           DINVCOST   = p_dinvcost,
           CINVCODE   = p_cinvcode,
           INVUNIT    = p_invunit,
           YONGYOU    = p_yongyou,
           CHANGERATE = p_changerate,
           MODIFIED   = p_modified,
           MODIFYTIME = sysdate
     where UPCODE = p_upcode
       and DITEM = p_ditem;
    --UPCODE=p_upcode,UPNAME=p_upname,DITEM=p_ditem,DCODE=p_dcode,DNAME=p_dname,DMATERIAL=p_dmaterial,DWEIGHT=p_dweight,DTWEIGHT=p_dtweight,DQUANTITY=p_dquantity,DREMARK=p_dre,DOTHER1=p_dother1,PRODUCTDWGCODE=p_productdwgcode,G1=p_g1,G2=p_g2,G3=p_g3,G4=p_g4,G5=p_g5,G6=p_g6,G7=p_g7,G8=p_g8,G9=p_g9,XIALIAO=p_xialiao,DINGE=p_dinge,LLDW=p_lldw,DMARK=p_d,INVCOST=p_invcost,DINVCOST=p_dinvcost,CINVCODE=p_cinvcode,INVUNIT=p_invunit,YONGYOU=p_yongyou,MODIFIED=p_modified,MODIFYTIME=sysdate; 
  else
    insert into XTDETAMSALL_DETAIL_2
      (UPCODE,
       UPNAME,
       DITEM,
       DCODE,
       DNAME,
       DMATERIAL,
       DWEIGHT,
       DTWEIGHT,
       DQUANTITY,
       DREMARK,
       DOTHER1,
       PRODUCTDWGCODE,
       G1,
       G2,
       G3,
       G4,
       G5,
       G6,
       G7,
       G8,
       G9,
       XIALIAO,
       DINGE,
       LLDW,
       DMARK,
       INVCOST,
       DINVCOST,
       CINVCODE,
       INVUNIT,
       YONGYOU,
       CHANGERATE,
       CREATOR,
       CREATETIME)
    values
      (p_upcode,
       p_upname,
       p_ditem,
       p_dcode,
       p_dname,
       p_dmaterial,
       p_dweight,
       p_dtweight,
       p_dquantity,
       p_dre,
       p_dother1,
       p_productdwgcode,
       p_g1,
       p_g2,
       p_g3,
       p_g4,
       p_g5,
       p_g6,
       p_g7,
       p_g8,
       p_g9,
       p_xialiao,
       p_dinge,
       p_lldw,
       p_d,
       p_invcost,
       p_dinvcost,
       p_cinvcode,
       p_invunit,
       p_yongyou,
       p_changerate,
       p_creator,
       sysdate);
  end if;
  commit;
end insert_update;

解决方案 »

  1.   

    你在system下面建立,在你的方案下是看不到的;
    你要加方案名才可以看得到;如果不加方案名,那你要连接到你的用户:conn 你的用户/你的密码
      

  2.   

    需要用XTDETAIL用户链接,创建对应的表和procedure!
      

  3.   

    那您的意思是
    如果还是上面的情况的话 我需要在存储过程中 进行适当更改就可以了吗?我的方案名为XTDETAIL
    begin
      select count(*)
        into num
        from XTDETAMSALL_DETAIL_2
       WHERE UPCODE = p_upcode
         and DITEM = p_ditem;
      if num <> 0 then
        update XTDETAIL.XTDETAMSALL_DETAIL_2
           set XIALIAO    = p_xialiao,
               DINGE      = p_dinge,
               LLDW       = p_lldw,
               DMARK      = p_d,
               INVCOST    = p_invcost,
               DINVCOST   = p_dinvcost,
               CINVCODE   = p_cinvcode,
               INVUNIT    = p_invunit,
               YONGYOU    = p_yongyou,
               CHANGERATE = p_changerate,
               MODIFIED   = p_modified,
               MODIFYTIME = sysdate
         where UPCODE = p_upcode
           and DITEM = p_ditem;
       else
        insert into XTDETAIL.XTDETAMSALL_DETAIL_2
          (UPCODE,
           UPNAME,
           DITEM,
           DCODE,
           DNAME,
           DMATERIAL,
           DWEIGHT,
           DTWEIGHT,
           DQUANTITY,
           DREMARK,
           DOTHER1,
           PRODUCTDWGCODE,
           G1,
           G2,
           G3,
           G4,
           G5,
           G6,
           G7,
           G8,
           G9,
           XIALIAO,
           DINGE,
           LLDW,
           DMARK,
           INVCOST,
           DINVCOST,
           CINVCODE,
           INVUNIT,
           YONGYOU,
           CHANGERATE,
           CREATOR,
           CREATETIME)
        values
          (……);
      

  4.   

    能否给个例子?
    如何进行进行连接?
    我是不是还需要知道XTDETAIL相对应的密码?
      

  5.   

    在system 用户下 分配 给 XTDETAIL 相应的权限。
    如 grant select,updaet,delete on XTDETAMSALL_DETAIL_2 to   XTDETAIL ;
     
      

  6.   

    当用select* from xtdetail.xtdetamsall_detail_2的时候 是可以执行的,无错误
    但是当 把用户名放置到存储过程中相应的xtdetamsall_detail_2前面的时候 却出现了错误
    错误提示为”表或视图不存在“
    请问这是一个什么情况?
      

  7.   

    现在我遇到了这么一个情况
    我再plSQL中 用xtdetail用户进行登陆的时候 是可以进行登陆的
    但是 当我在oracle9i直接登陆数据库的时候 用xtdetail用户进行登录的时候 说我的权限不够
    请问这是一种什么情况?
      

  8.   

    xtdetail用户你在建立的时候你都给了什么权限?
      

  9.   

    以system登陆在XTDETAIL下面建立的objects,以XTDETAIL登陆是看不到的,
    需要在system 用户下 分配 给 XTDETAIL 相应的权限。 
    如 grant select,updaet,delete on XTDETAMSALL_DETAIL_2 to  XTDETAIL ; 
      

  10.   

    这段代码在new->SQL Window中写入的时候,单击execute(F8)的时候是可以通过的
    有可能是你当前window的current Schema是“XTDETAIL"
      

  11.   

    select owner,table_name from dba_tables where table_name='XTDETAMSALL_DETAIL_2' 看看owner到底是谁
      

  12.   

    表XTDETAMSALL_DETAIL_2是在XTDETAIL方案中创建的,owner应该是XTDETAIL,
    存储过程insert_update是在SYSTEM方案中,它在引用到XTDETAMSALL_DETAIL_2时,会
    在SYSTEM方案中去找,当然找不到了。
    建一个表XTDETAMSALL_DETAIL_2的同义词。
      

  13.   

    是XTDETAIL这个用户,而我是在登陆system用户下建立的这个'XTDETAMSALL_DETAIL_2' 表的
      

  14.   

    如果我现在对我的XTDETAIL表进行授权的话
    会不会对以前 使用这个用户登陆的人的操作有影响呢?还有就是 大家所说的创建“表XTDETAMSALL_DETAIL_2的同义词”是一个怎么回事?请高手多多指教!
      

  15.   

    不建议LZ在system用户下执行这个存储过程,而且也不建议LZ在system用户下创建XTDETAIL用户所属的表及存储过程。
    建议LZ创建XTDETAIL用户后,授与此用户连接权限,以此用户登录数据库创建XTDETAMSALL_DETAIL_2表,然后执行此存储过程。
      

  16.   

    利用DBA身份建立公共同义词,用Schema Manager或者SQL GRANT命令分配相应的优先权即可查询到该表 
      

  17.   

    我刚才通过system用户名来登陆了plsql以后,我再myobjects->users->XTDETAIL->objects->produres->insert_update中看到了一这个insert_update存储过程,左上角是一个绿色的图标,edit时候没有错误报错;并且在system中看到了的insert_update存储过程的左上角有一个叉,edit这个的时候还没有执行成功,报错:视图不存在。那这种情况的话 我该如何在程序中表示呢?
      

  18.   

    加入用户为hj,创建一个同义词,首先应该给hj用户授予访问emp表权限,以scott用户身份登录数据库,执行以下命令. sql>grant all on emp to hj; 再以hj用户身份登录数据库,执行下列命令: sql>create synonym emp for scott.emp; 现在hj用户可以使用下面的语句访问scott用户的emp表了. sql>select *from emp; 如果用户拥有足够权限,就可创建公有同义词. DBA可以创建公共同义词(Public Synonym).
    公共同义词全体用户可以存取语法:SQL> create public synonym 公共同义词名 for 代替项; SCOTT: SQL> grant select on payment to public; SYSTEM: SQL> create public synonym payment for scott.payment; 现在所有用户可以使用下面的语句访问scott用户的payment表了. 
    SQL>select *from payment; 
      

  19.   

    在调用这个存储过程的时候出现了这样一个错误: 
    “Warning: ociexecute(): OCIStmtExecute: ORA-06502: PL/SQL: 数字或值错误 : 字符到数值的转换错误 ORA-06512: 在line 1 in d:\myweb\a\cost\include\compute.php on line ” 
    请问该如何解决这个问题? 
    我在网络上找了很多 但是 具体解决办法很少,并且有些东西 也不是很清楚!
    http://topic.csdn.net/u/20090331/14/88c3e354-7fa8-4fe0-aea0-5ec06671156f.html?seed=1282781867
    的14楼