ibatis调用存储过程时出错  
--- Cause: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'DEMO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
DEMO为存储过程的名字  是我的权限的问题吗

解决方案 »

  1.   

    如果你判读是权限问题,请先在pl/sql development 上使用这个账户直接执行下那个存储过程再说
      

  2.   

    我在pl/sql运行了  没错的 可以的 没错啊
      

  3.   

    你在PL/SQL 上和java用的同一个数据库?如果是那就不是权限问题了,你贴下ibatis 调用存储过程的配置文件
      

  4.   

    ibatis<parameterMap class="java.util.Map" id="swapParameters">  
        <parameter property="id"  javaType="java.lang.Integer" jdbcType="NUMBER" mode="IN"/>  
        <parameter property="tag"  javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT"/>  
        </parameterMap>  
        <procedure id="TestDAO.produre" parameterMap="swapParameters">  
               {call DEMO(?,?)}   
        </procedure>
    dao
    HashMap paramMap=new HashMap();
    int a=3;
    paramMap.put("id", a); 
    String sss=null;
    paramMap.put("tag", sss);
     dao.insert ("TestDAO.produre",paramMap);    //毕为insert方法
     return (Integer)paramMap.get("tag"); 
    存储过程
    create or replace procedure DEMO ( id in number, tag out number)
    is
    count_num number;
    begin
        select count(*)  into count_num from TYPE t where t.ID=id;
               if count_num>0 then
                 tag:=1;
               else
                 tag:=0;
               end if;
               
        dbms_output.put_line(count_num);
    end;
      

  5.   

     根据楼主的发帖未能定位问题,建议:
    1.首先在pl/sql develope 工具中测试存储过程,以确保存储过程被正确编译。
      

  6.   

    个人感觉正常着,没有什么问题啊
    请确认下
    1、java与pl/sql是同一个用户
    2、存储过程就是那个用户写的
    如果都是的,俺就算是帮你顶了等高人来解答了
      

  7.   

    请大家看看LZ报的错误原因,不要胡乱随便猜测
    错误的意思是:'DEMO' 应该声明,你可以到网上查下关於声明变量的用法,或者是存储过程的实例
      

  8.   


    你的存储过程调用有问题
    <parameter property="tag" javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT"/>   返回的类型是string。
    但是
    create or replace procedure DEMO ( id in number, tag out number)
    以及return (Integer)paramMap.get("tag");  但是你的存储过程以及java代码中都是int类型