ストアドプロシージャは、期待している値を返していません。私はその手順の問題が何か分かっていませんでした。ここで期待値を返さないストアドプロシージャ
は手順です:
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正しく、私が正しいIDと名前を入力するかどうか、すべての時間を働いていない手順であります違う。
ここで私は、誰かがミスが、私はここで作ってるんだということが何であるかを教えてもらえます?
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デベロッパーなどのツールを持っていなければ、画面上で値とクエリを印刷することができます。プロシージャで生成された同じクエリをデータベースに起動します。あなたはあなた自身の答えを得るでしょう。 –