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为存储过程的名字 是我的权限的问题吗
--- 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为存储过程的名字 是我的权限的问题吗
<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、存储过程就是那个用户写的
如果都是的,俺就算是帮你顶了等高人来解答了
错误的意思是:'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类型