当前位置:编程学习 > JAVA >>

【求助啊】ibatis调用存储过程出错

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为存储过程的名字  是我的权限的问题吗 --------------------编程问答-------------------- --------------------编程问答-------------------- 谢谢各位了 --------------------编程问答-------------------- --------------------编程问答-------------------- 如果你判读是权限问题,请先在pl/sql development 上使用这个账户直接执行下那个存储过程再说 --------------------编程问答-------------------- 我在pl/sql运行了  没错的 可以的 没错啊 --------------------编程问答-------------------- 我也觉得是权限的问题,你授权一下试试 --------------------编程问答-------------------- 怎么授权啊  不是很懂啊  谢谢了  --------------------编程问答--------------------
引用 6 楼 funfenffun 的回复:
我也觉得是权限的问题,你授权一下试试

怎么授权啊 不是很懂啊 谢谢了 --------------------编程问答-------------------- 你在PL/SQL 上和java用的同一个数据库?如果是那就不是权限问题了,你贴下ibatis 调用存储过程的配置文件 --------------------编程问答-------------------- 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; --------------------编程问答--------------------  根据楼主的发帖未能定位问题,建议:
1.首先在pl/sql develope 工具中测试存储过程,以确保存储过程被正确编译。 --------------------编程问答-------------------- 个人感觉正常着,没有什么问题啊
请确认下
1、java与pl/sql是同一个用户
2、存储过程就是那个用户写的
如果都是的,俺就算是帮你顶了等高人来解答了 --------------------编程问答-------------------- 请大家看看LZ报的错误原因,不要胡乱随便猜测。。。
引用
--- Cause: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'DEMO' must be declared

错误的意思是:

'DEMO' 应该声明,你可以到网上查下关於声明变量的用法,或者是存储过程的实例 --------------------编程问答--------------------

你的存储过程调用有问题。。。
<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类型。。。
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,