-2
我正在嘗試在Postgres中遷移Oracle Procedure/Funcnctions,在PostgreSQL中我發現處理PostgreSQL中的遊標語法有一些困難。 甲骨文PROC片段是:我如何測試一個refcursor是否已經在plpgsql中打開
IF v_user_auth THEN
OPEN no_emp_cur;
ELSE
OPEN un_auth_no_emp_cur;
END IF;
ELSE
IF v_direction = 'newer' THEN
IF v_user_auth THEN
OPEN newer_cur;
ELSE
OPEN un_auth_new_cur;
END IF;
ELSE -- older
IF v_user_auth THEN
OPEN older_cur;
ELSE
OPEN un_auth_old_cur;
END IF;
END IF;
END IF;
LOOP
IF no_emp_cur%ISOPEN THEN
FETCH no_emp_cur INTO v_emp_rec;
IF NOT FOUND THEN EXIT; END IF; -- apply on no_emp_cur
ELSIF un_auth_no_emp_cur%ISOPEN THEN
FETCH un_auth_no_emp_cur INTO v_emp_rec;
IF NOT FOUND THEN EXIT; END IF; -- apply on un_auth_no_emp_cur
ELSIF newer_cur%ISOPEN THEN
FETCH newer_cur INTO v_emp_rec;
IF NOT FOUND THEN EXIT; END IF; -- apply on newer_cur
ELSIF older_cur%ISOPEN THEN
FETCH older_cur INTO v_emp_rec;
IF NOT FOUND THEN EXIT; END IF; -- apply on older_cur
ELSIF un_auth_new_cur%ISOPEN THEN
FETCH un_auth_new_cur INTO v_emp_rec;
IF NOT FOUND THEN EXIT; END IF; -- apply on un_auth_new_cur
ELSIF un_auth_old_cur%ISOPEN THEN
FETCH un_auth_old_cur INTO v_emp_rec;
IF NOT FOUND THEN EXIT; END IF; -- apply on un_auth_old_cur
END IF;
Few Processing ...
END LOOP;
IF no_emp_cur%ISOPEN THEN
CLOSE no_emp_cur;
ELSIF un_auth_no_emp_cur%ISOPEN THEN
CLOSE un_auth_no_emp_cur;
ELSIF newer_cur%ISOPEN THEN
CLOSE newer_cur;
ELSIF older_cur%ISOPEN THEN
CLOSE older_cur;
ELSIF un_auth_new_cur%ISOPEN THEN
CLOSE un_auth_new_cur;
ELSIF un_auth_old_cur%ISOPEN THEN
CLOSE un_auth_old_cur;
END IF;
END IF;
請與語法中的Postgres遷移此幫助。
在此先感謝!
你有寫過任何代碼到目前爲止? –
我剛剛關閉了所有遊標,但我不確定如何使用這種方式,所以我只想在遊標打開的情況下知道語法,我們可以關閉該遊標。 – Pooja
請修改您的問題,具體說明您的問題以及您嘗試過的方法。聽起來真正的問題是「如何測試refcursor是否已經在plpgsql中打開」? –