1つのIDが間違っている5人の従業員の従業員の経験を印刷するタイプを作成しました。私はそれをスキップするために例外を作成しましたが、私はそれの結果を取得していません。私は何の間違いをしたのですか?私の質問を参照して、エラーを伝えてください。事前にタイプの作成と実行
CREATE OR REPLACE TYPE emp_id_typ IS TABLE OF NUMBER;
/
CREATE OR REPLACE TYPE emp_exp_typ IS TABLE OF NUMBER;
/
CREATE OR REPLACE PROCEDURE exp_sp (p_empid IN emp_id_typ
, p_exp OUT emp_exp_typ)
IS
v_exp NUMBER;
BEGIN
FOR i IN p_empid.FIRST..p_empid.COUNT
LOOP
p_exp.EXTEND;
SELECT ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)/12) INTO v_exp FROM employees
WHERE employee_id = p_empid(i);
p_exp(p_exp.LAST) := v_exp;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
v_exp := NVL(v_exp, 'NULL');
END exp_sp;
/
DECLARE
v_empid emp_id_typ := emp_id_typ();
v_exp emp_exp_typ := emp_exp_typ();
BEGIN
v_empid := emp_id_typ(101, 102, 52, 100, 206);
FOR i IN v_empid.FIRST..v_empid.COUNT
LOOP
exp_sp(v_empid(i), v_exp(i));
dbms_output.put_line(v_empid(i), v_exp(i));
END LOOP;
END;
/
おかげで...
あなたが見ているものはよくわかりません。あなたのクライアントは 'dbms_output'バッファを見るように設定されていますか?例えばSQL \ * PlusまたはSQL Developerで 'set serveroutput on'を実行するか、IDEで接続するために有効にしますか?あるいは '他のとき'ハンドラが 'v_exp'の代わりに' p_exp'に値を代入することになっていますか?文字列 '' NULL ''を 'number'コレクションに代入することはできません... –
いいえ私は練習していません –
"結果が得られません"というのは、それが実行されることを意味しますが、実際には匿名ブロックからエラーを得るのに対し、期待した結果は得られません。あなたが期待していることと実際にあなたの質問に表示されているものを含めると、本当にはるかに役立ちます。 –