ref_cursorで結果を取得したいが、それを行うことができない。実行時の参照カーソル
だけで即時
CREATE OR REPLACE PROCEDURE TEST_PROC_QT (p_name IN VARCHAR2,
p_result_set OUT sys_refcursor) IS
v_sql VARCHAR2(4000);
BEGIN
v_sql := '';
v_sql := 'SELECT * FROM USERS WHERE 1=1 ';
IF p_name is not null THEN
v_sql := v_sql || ' AND login_id = :v_name';
ELSE
v_sql := v_sql || ' AND ((1=1) or :v_name is null)';
END IF;
Dbms_output.put_line(v_sql);
EXECUTE IMMEDIATE v_sql
--OPEN p_result_set for v_sql
--INTO p_result_set using p_name;
END;
全く関係のないものの(即時実行で)クエリを書くのは良い方法である:「LOGIN_IDは= NVL USERS SELECT * FROM(: v_name、login_id) ' –
@Thomas Jones-Low:あなたがその列にインデックスを持っていればうまくいかないでしょう。 – Robotron