티스토리 뷰

반응형

얼마전 PowerBuilder 9.0 버전에서 잘 사용하는 아래와 같은 저장 프로시저가 Powerbuilder 2019 버전으로 업그레이드 후 Output 파라미터를 못 받아 오는 현상이 발생 했습니다.

 

문제가 되는 파워빌더 스크립트 샘플

 

Long 		ll_Gubun
DateTime ldt_F_Day, ldt_T_Day
String	ls_Msg

ll_Gubun = 2
ldt_F_Day = Gstr_Ui.sys_date
ldt_T_Day = Gstr_Ui.sys_date


	Declare PB_MF200_Output Procedure For SP_MF200_UP_O
			@iGubun	= :ll_Gubun 
	,		@iF_Day		= :ldt_F_Day   
	,		@iT_Day		= :ldt_T_Day 
	,		@oRtn		= :ls_Msg  Output;
	
	
	
EXECUTE PB_MF200_Output;
FETCH PB_MF200_Output Into :ls_Msg;
CLOSE PB_MF200_Output;

Messagebox('rtn',string(ls_Msg))

위 소스의 경우 파월빌터 9.0 버전의 경우 정상 작동합니다. 그러나 2019 버전 부터는 Output 파라미터를 정상적으로 받아 오지 못합니다.

 

 

해결방법은 아래와 같이 저장 프로시저에 스키마 부분을 정확히 선언하면됩니다.

소스에서 변경된부분은 선언시 SP_MF200_UP_O -> dbo.SP_MF200_UP_O 변경하면 해결됩니다.

(※ 스키마가 dbo가 아닌경우 해당 스키마를 선언해야됩니다.)

2019 버전에서 정상적으로 Output 파라미터 받아오는 소스

Long 		ll_Gubun
DateTime ldt_F_Day, ldt_T_Day
String	ls_Msg

ll_Gubun = 2
ldt_F_Day = Gstr_Ui.sys_date
ldt_T_Day = Gstr_Ui.sys_date


	Declare PB_MF200_Output Procedure For dbo.SP_MF200_UP_O
			@iGubun	= :ll_Gubun 
	,		@iF_Day		= :ldt_F_Day   
	,		@iT_Day		= :ldt_T_Day 
	,		@oRtn			= :ls_Msg  Output;
	
	
	
EXECUTE PB_MF200_Output;
FETCH PB_MF200_Output Into :ls_Msg;
CLOSE PB_MF200_Output;

//Messagebox('rtn',string(ls_Msg))

	IF ls_Msg <>'1'  Then
		MessageBox('오류','저장실패 전산실에 문의 바랍니다.')
		gw_Frame.wf_SetMicroHelp('저장실패') 
		RollBack Using SQLCA;
	Else
		gw_Frame.wf_SetMicroHelp('저장완료.') 
		Commit using SQLCA;
	End IF	

 

추가로 DB는 MSSQL  입니다.

반응형
댓글