I have change project database from oracle to postgresql.
And I face problem in cursor declaration, can u please sort out that.
I attached my functions also...
Regards,
Oracle function
PROCEDURE Procdeptcombo(
Isvalid
IN VARCHAR2,Hcode
IN VARCHAR2,Rostertype
VARCHAR2,Seatid
VARCHAR2,Ipaddress
VARCHAR2,Err
OUT VARCHAR2,Resultset
OUT Ahis_Type.refcursor)
AS
QUERY
VARCHAR2 (4000);Tname
VARCHAR2(50);Cname
VARCHAR2(50);BEGIN
Tname
:='GBLT_DEPARTMENT_MST';Cname
:='GNUM_DEPT_CODE';QUERY
:= 'SELECT DISTINCT SUBSTR (a.hopnum_deptunitcode, 1, 3), b.gstr_dept_name FROM HOPT_DEPT_UNIT_ROSTER_DTL a, GBLT_DEPARTMENT_MST b WHERE a.hopdt_start_DT <= SYSDATE AND a.hopdt_end_DT >= SYSDATE AND b.gnum_dept_code = SUBSTR (a.hopnum_deptunitcode, 1, 3) AND b.gnum_hospital_code = a.gnum_hospital_code AND gdt_effective_frm <= TRUNC (SYSDATE) AND NVL (gdt_effective_to, SYSDATE + 1) >= TRUNC (SYSDATE) AND a.gnum_isvalid = ' || isvalid || ' AND a.gnum_hospital_code = ' || hcode || ' AND a.hgnum_roster_type=' || rostertype|| ' AND b.gnum_dept_code IN ( SELECT gnum_column_value FROM GBLT_ROLE_SEAT_TABLE_DTL P, GBLT_METATABLE_COLUMN_MST q WHERE P.gnum_metatable_id = q.gnum_metatable_id AND gstr_table_name =trim('' ' || tname ||''') AND gstr_column_name = trim(''' || cname || ''') AND P.gnum_seatid =Pkg_Usermgmt.fun_getseatid(' || seatid || ',' || hcode || ') AND P.gnum_hospital_code = q.gnum_hospital_code AND P.gnum_hospital_code =' || hcode || ' ) ORDER BY b.gstr_dept_name '; OPEN resultset FOR QUERY; EXCEPTION WHEN OTHERS THEN IF resultset%ISOPEN THEN CLOSE resultset; END IF;Err
:= SQLERRM; RAISE;END
Procdeptcombo;Postgresql function
CREATE OR REPLACE FUNCTION procdeptcombo(IN isvalid character varying, IN hcode character varying, IN rostertype character varying, IN seatid character varying, IN ipaddress character varying, OUT resultset refcursor)
RETURNS refcursor AS
$BODY$
RETURNS refcursor AS
$BODY$
DECLARE
Tname TEXT;
Cname TEXT;
BEGIN
Tname:='GBLT_DEPARTMENT_MST';
Cname:='GNUM_DEPT_CODE';
OPEN resultset
FOR SELECT DISTINCT SUBSTR (a.hopnum_deptunitcode::VARCHAR, 1, 3), b.gstr_dept_name
FROM HOPT_DEPT_UNIT_ROSTER_DTL a, GBLT_DEPARTMENT_MST b
WHERE a.hopdt_start_DT <= CURRENT_DATE AND a.hopdt_end_DT >= CURRENT_DATE AND b.gnum_dept_code::VARCHAR = SUBSTR (a.hopnum_deptunitcode::VARCHAR, 1, 3)
AND b.gnum_hospital_code = a.gnum_hospital_code
AND gdt_effective_frm <= (CURRENT_DATE)
AND COALESCE(CASE WHEN gdt_effective_to=NULL THEN (CURRENT_DATE+1) ELSE gdt_effective_to END,(CURRENT_DATE + 1)) >= (CURRENT_DATE)
AND a.gnum_isvalid= isvalid::numeric
AND a.gnum_hospital_code = hcode::numeric
AND a.hgnum_roster_type= rostertype::numeric
AND b.gnum_dept_code::VARCHAR IN (SELECT gnum_column_value FROM GBLT_ROLE_SEAT_TABLE_DTL P, GBLT_METATABLE_COLUMN_MST q
WHERE P.gnum_metatable_id = q.gnum_metatable_id
AND gstr_table_name = tname
AND gstr_column_name = cname
AND P.gnum_seatid =fun_getseatid( seatid::numeric , hcode::numeric )
AND P.gnum_hospital_code = q.gnum_hospital_code
AND P.gnum_hospital_code = hcode::numeric ) ORDER BY b.gstr_dept_name;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION procdeptcombo(character varying, character varying, character varying, character varying, character varying) OWNER TO postgres;
Tname TEXT;
Cname TEXT;
BEGIN
Tname:='GBLT_DEPARTMENT_MST';
Cname:='GNUM_DEPT_CODE';
OPEN resultset
FOR SELECT DISTINCT SUBSTR (a.hopnum_deptunitcode::VARCHAR, 1, 3), b.gstr_dept_name
FROM HOPT_DEPT_UNIT_ROSTER_DTL a, GBLT_DEPARTMENT_MST b
WHERE a.hopdt_start_DT <= CURRENT_DATE AND a.hopdt_end_DT >= CURRENT_DATE AND b.gnum_dept_code::VARCHAR = SUBSTR (a.hopnum_deptunitcode::VARCHAR, 1, 3)
AND b.gnum_hospital_code = a.gnum_hospital_code
AND gdt_effective_frm <= (CURRENT_DATE)
AND COALESCE(CASE WHEN gdt_effective_to=NULL THEN (CURRENT_DATE+1) ELSE gdt_effective_to END,(CURRENT_DATE + 1)) >= (CURRENT_DATE)
AND a.gnum_isvalid= isvalid::numeric
AND a.gnum_hospital_code = hcode::numeric
AND a.hgnum_roster_type= rostertype::numeric
AND b.gnum_dept_code::VARCHAR IN (SELECT gnum_column_value FROM GBLT_ROLE_SEAT_TABLE_DTL P, GBLT_METATABLE_COLUMN_MST q
WHERE P.gnum_metatable_id = q.gnum_metatable_id
AND gstr_table_name = tname
AND gstr_column_name = cname
AND P.gnum_seatid =fun_getseatid( seatid::numeric , hcode::numeric )
AND P.gnum_hospital_code = q.gnum_hospital_code
AND P.gnum_hospital_code = hcode::numeric ) ORDER BY b.gstr_dept_name;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION procdeptcombo(character varying, character varying, character varying, character varying, character varying) OWNER TO postgres;