function related problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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$
 
 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;
 

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux