使用Oracle的Refcursor中的问题 [英] Problem in Refcursor using Oracle

查看:85
本文介绍了使用Oracle的Refcursor中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨 请任何人有解决方案,如果第一次引用的记录大于第二个refcur1的执行记录,我想执行oracle SP,否则如果有人知道,请不要帮助我
这是我的SP代码

Hi please any body have solution i want to execute oracle SP if first refcur has record than and than second refcur1 execute otherwise not please help me if anybody knows
this is my SP code

    (   
			v_COM_Service_No IN VARCHAR2,
			v_COM_CompDate IN TIMESTAMP,			
			v_COM_Type IN CHAR,
			v_COM_DefCD1 IN NUMBER,					
			v_COM_Modified_By IN VARCHAR2,
			v_COM_IP_Addr IN VARCHAR2,					
			v_COM_Remarks in varchar2 default null
			,v_refcur out sys_refcursor
			,v_refcur1 out sys_refcursor
		 	) as

    v_OutComplaintNo varchar2(50);
   v_maxSequenceNo number;   
   v_App_No  VARCHAR2(25);   
   v_mtrchngcnt number;
   v_mtrserialno VARCHAR2(25);   
   v_todflag varchar2(10);

BEGIN

open v_refcur for
select nvl(MTRM_CHANGE_COUNT,0)+1 ,MTRM_Serial_No,TOD_Name into v_mtrchngcnt , v_mtrserialno,  v_todflag
from  M_Meter,M_ServiceMaster,M_TOD where  
 TOD_Id = MTRM_TOD_Flag  
 and MTRM_Service_No = v_COM_Service_No 
 and SRM_Discon_tag_Id = 2 
 and SRM_Service_no = MTRM_Service_No and  (MTRM_CHANGE_INDICATION=0 or MTRM_CHANGE_INDICATION is null)  ;
if(v_mtrchngcnt > 1)then
open v_refcur1 for 
select  sws_com_compno.nextval into v_maxSequenceNo from dual;
end if;
END;

推荐答案

您必须首先检查诸如
之类的数据
you have first to check for the data like

SELECT COUNT(*) INTO XYZ FROM M_Meter,M_ServiceMaster,M_TOD where   
TOD_Id = MTRM_TOD_Flag   
and MTRM_Service_No = v_COM_Service_No 
and SRM_Discon_tag_Id = 2 
and SRM_Service_no = MTRM_Service_No and   (MTRM_CHANGE_INDICATION=0 or MTRM_CHANGE_INDICATION is null);

IF XYZ > 0 THEN

return first cursor

ELSE

return second cursor

ENDIF;


这篇关于使用Oracle的Refcursor中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆