Сохраненная процедура не возвращает ожидаемое значение. Я не знал, в чем проблема с процедурой.Сохраненная процедура не возвращает ожидаемое значение
Вот процедура:
CREATE OR REPLACE procedure PRC_CUSTOMER_WITH_LOGIN
(p_name_out out varchar2,
p_count out int,
p_all_records out SYS_REFCURSOR,
p_mode in varchar2,
p_id in varchar2,
p_name_in in varchar2,
p_contact_no in varchar2,
p_email in varchar2,
p_address in varchar2)
IS
BEGIN
IF p_mode='q'
THEN
select NAME into p_name_out from customer where id='1';
ELSIF p_mode='i'
THEN
INSERT into customer(id,name,contactNo,email,address)
Values(p_id, p_name_in, p_contact_no , p_email , p_address);
ELSIF p_mode='u'
THEN
UPDATE customer set name=p_name_in, contactNo=p_contact_no, email=p_email, address=p_address
where id=p_id;
ELSIF p_mode='d'
THEN
DELETE from customer where id=p_id;
ELSIF p_mode='a'
THEN
OPEN p_all_records FOR
select * from customer;
ELSIF p_mode='l'
THEN
SELECT COUNT(*) into p_count from customer WHERE name=p_name_in AND id=p_id;
END IF;
END;
/
Это процедура все остальные условия работают нормально, но последнее условие не работает правильно это условие возвращает 0, все время вводить ли я правильный идентификатор и имя или неправильно.
Вот я называю эту процедуру
cs = (OracleCallableStatement) con.prepareCall("{call TESTDB.PRC_CUSTOMER_WITH_LOGIN(?,?,?,?,?,?,null,null,null)}");
cs.registerOutParameter(1, OracleTypes.VARCHAR);
cs.registerOutParameter(2, OracleTypes.INTEGER);
cs.registerOutParameter(3, OracleTypes.CURSOR);
cs.setString(4, "l");
cs.setString(5, password);
cs.setString(6, name);
cs.executeQuery();
chk=cs.getInt(2);
System.out.println(chk);
Может кто-нибудь сказать мне, что ошибка в том, что я делаю здесь? Я буду благодарен .... :)
вы можете отлаживать свой код, если у вас нет инструмента, такого как жаба, разработчик sql и т. Д., Тогда вы можете распечатать значения и запрос на экране. Выполните тот же запрос, сгенерированный в вашей процедуре, на ваш db. Вы получите свой собственный ответ. –