我有一个过程,它接受两个字符串参数,并从数据库Oracle10g返回Integer值。
当我试图打印出结果时,我得到了无效的列索引。
代码是
try {
Dbconnection NewConnect = new Dbconnection();
Connection con = NewConnect.MakeConnect();
CallableStatement stmt1 = ((Connection) con).prepareCall("{ call login (?, ?, ?)}");
stmt1.registerOutParameter(1, Types.INTEGER);
stmt1.setString(2, "ahmed");
stmt1.setString(3, "ahmed");
ResultSet rslt = stmt1.executeQuery();
if (rslt.next())
{
System.out.println( rslt.getInt(1));
}过程性登录
create or replace
PROCEDURE login
(p_username teacher.username%TYPE,
p_password teacher.password%TYPE)
IS
v_teacher_id teacher.teacher_id%TYPE;
v_username teacher.username%TYPE ;
v_password teacher.password%TYPE ;
BEGIN
SELECT teacher_id, username , password
INTO v_teacher_id , v_username , v_password
FROM teacher
where username = p_username and password =p_password ;
DBMS_OUTPUT.PUT_LINE (v_teacher_id);
end login ;发布于 2015-07-24 15:49:42
不错的尝试,但这里存在一些错误...这样做..。你将100%确定地检索你的输出。
CREATE OR REPLACE PROCEDURE login
( v_teacher_id OUT teacher.teacher_id%TYPE,
p_username IN teacher.username%TYPE,
p_password IN teacher.password%TYPE)
IS ..... (blah blah blah)告诉我一件事,如果你在过程的开始没有提供任何输出参数,你怎么能期望Java代码的输出呢?
现在尝试一下,您将从java代码中获得输出
rslt.getInt(1)万事如意:)...苏拉吉特
https://stackoverflow.com/questions/16548369
复制相似问题