我的代码是:
型
create or replace type search_filter_type is object
( search_code varchar2(100),
search_key varchar2(100),
search_string varchar2(100),
search_number number,
search_date date,
search_type varchar2(100) ,
SEARCH_FIELD varchar2(100) ,
search_condition varchar2(4000),
search_query varchar2(4000),
CONSTRUCTOR FUNCTION search_filter_type return self as result
);
集合
CREATE OR REPLACE TYPE SEARCH_FILTER_COLC IS TABLE OF SEARCH_FILTER_TYPE;
如何运行以下程序并获取动态查询数据/
CREATE OR REPLACE PROCEDURE BPC_SEARCH_CUSTOMER(P_FILTER in out nocopy SEARCH_FILTER_COLC)
IS
LV_SEARCH_STRING VARCHAR2(200);
LV_SEARCH_qry VARCHAR2(2000);
BEGIN
IF P_FILTER IS NOT NULL THEN
LV_SEARCH_qry := 'SELECT N_CUST_REF_NO, B.V_SEX AS Gender, A.V_TITLE_CODE, B.V_TITLE_DESC ||'''.'''||v_name AS Given_name, v_first_name AS first_name,
V_MIDDLE_NAME AS MIDDLE_name ,V_last_NAME AS last_name, D_BIRTH_DATE AS "Date of Birth" FROM
GNMT_CUSTOMER_MASTER A, GNLU_TITLE_MASTER B WHERE A.V_TITLE_CODE=B.V_TITLE_CODE';
FOR I IN 1..P_FILTER.COUNT
LOOP
IF P_FILTER(I).SEARCH_CODE='IDENTIFICATION' THEN
LV_SEARCH_STRING:= CASE P_FILTER(I).SEARCH_TYPE
WHEN 'STARTS WITH' THEN 'LIKE ''%' || P_FILTER(I).SEARCH_STRING || ''''
WHEN 'CONTAINS' THEN 'IN '|| P_FILTER(I).SEARCH_STRING || ''''
WHEN 'ENDS WITH' THEN 'LIKE '|| P_FILTER(I).SEARCH_STRING || '%'''
WHEN 'EQUAL' THEN '= '|| P_FILTER(I).SEARCH_STRING || ''''
END;
P_FILTER(I).search_condition := ' AND N_CUST_REF_NO IN (SELECT N_CUST_REF_NO FROM GNDT_CUSTOMER_IDENTIFICATION WHERE V_IDEN_CODE='''|| P_FILTER(I).SEARCH_FIELD || ''' AND V_IDEN_NO '|| LV_SEARCH_STRING || ')';
END IF;
P_FILTER(I).search_condition := P_FILTER(I).search_condition || P_FILTER(I).search_condition :=;
LV_SEARCH_qry := LV_SEARCH_qry || P_FILTER(I).search_condition;
END LOOP;
P_FILTER(I).search_query := LV_SEARCH_qry ;
END IF;
END;
我需要执行过程查询以及如何调用或运行它?
细节: 将动态值传递给此过程。