【求助啊】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运行了 没错的 可以的 没错啊 --------------------编程问答-------------------- 我也觉得是权限的问题,你授权一下试试 --------------------编程问答-------------------- 怎么授权啊 不是很懂啊 谢谢了 --------------------编程问答--------------------
怎么授权啊 不是很懂啊 谢谢了 --------------------编程问答-------------------- 你在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报的错误原因,不要胡乱随便猜测。。。
错误的意思是:
'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 开发