调用Oracle中的过程的问题!!暴急!!谢谢

sunpowerkill 2003-12-12 05:02:32
用java调用Oracle中的过程,在sqlplus中测试过程,是好用的,但是在java调用的时候就有错误,谢谢各位了!!
以下是过程的内容,目地是检查用户名和密码是否正确,如果正确返回1,否则为0
create or replace procedure CheckUser
(Sel_id USERSTABLE.USERID%TYPE,
Sel_paw USERSTABLE.PASSWORD1%TYPE,
checknum OUT INTEGER
)AS
CURSOR CP_selectusers IS
Select * from USERSTABLE
where USERSTABLE.USERID=Sel_id and USERSTABLE.Password1=Sel_paw;
cursor_user USERSTABLE%ROWTYPE;
begin
open CP_selectusers;
Fetch CP_selectusers Into cursor_user;
IF cursor_user.userid IS NULL OR cursor_user.password1 IS NULL THEN
checknum:=0;
Else
checknum:=1;
END IF;
Exception
when OTHERS Then
checknum:=111;
end CheckUser;
在sqlplus中执行为,如果没有就NN就为0测了,好用!
SQL> variable nn number;
SQL> execute CheckUser('0005','lh',:nn);
SQL> PL/SQL 过程已成功完成。
SQL> print nn;
NN
----------
1
下面是JAVA调用的代码.不包含所有
Connection con=DriverManager.getConnection(ConnectionStr,user,password);
CallableStatement cs=con.prepareCall("{call CheckUser(?,?,?}");
cs.registerOutParameter(3,java.sql.Types.INTEGER);
cs.setString(1,"0002");
cs.setString(2,"ll");
cs.execute();
int i=cs.getInt(3);
if(i!=0)
{
      System.out.println("User Exist");
}
else
{
System.out.println("haven't User");
}
执行完后,出了以下消息
ORA-06550: 第 1 行, 第 25 列:
PLS-00103: 出现符号 ";"在需要下列之一时:
. ( ) , * @ % & | = - + < / >
at in is mod not range rem => .. <an exponent (**)>
<> or != or ~= >= <= <> and or like between || indicator
符号 ")" 被替换为 ";" 后继续。
...全文
31 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunpowerkill 2003-12-12
  • 打赏
  • 举报
回复
不行呀
noratong 2003-12-12
  • 打赏
  • 举报
回复
你的出错信息好像说明多写了个分号似的,但Oracle里面运行有没问题,很奇怪.

表面是看你的代码实在看不出来有什么问题,建议把cs.registerOutParameter(3,java.sql.Types.INTEGER);放到cs.setString(2,"ll");下面再试试.



sunpowerkill 2003-12-12
  • 打赏
  • 举报
回复
不是try的事,这写的是代码的片断,
cricketlj 2003-12-12
  • 打赏
  • 举报
回复
加上
try{

}ca0tch(Exception ex){

}

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧