2011-09-16 3 views
0
DECLARE sp_send_dbmail PROCEDURE FOR sp_send_dbmail 
    @profile_name = :ls_Null, 
    @recipients = :ls_To, 
    @copy_recipients = :ls_Null, 
    @blind_copy_recipients = :ls_Null, 
    @subject = :ls_Null, 
    @body = :ls_Body, 
    @importance = :ls_Importance, 
    @rtn = :li_Rtn OUTPUT; 

EXECUTE sp_send_dbmail; 

답변

0

필자는 왜 stored procs를 호출하는 것이 PowerBuilder에서 문제가되지 않는지 잘 모르겠습니다.
그 코드는 내가 볼 수있는 것으로부터 멋지게 보인다.

실행 후 SQLCA.SQLCode 및 SQLCA.SQLErrText를 점검하여 오류가 있는지 판별하십시오. 다음과 같이 사용할 수 있습니다.

if SQLCA.SQLCode <> 0 then 
    MessageBox("Error", "Error Code: " + String(SQLCA.SQLDBCode) + "~r~n" + & 
    "Error Message: " + SQLCA.SQLErrText) 
end if 
0

트랜잭션 개체에 로컬 외부 함수를 선언하십시오. 사용자 정의 트랜잭션 객체를 열고 로컬 외부 함수 탭으로 이동하십시오.

프로 시저 또는 package.procedure 전화를 정의이 예제의 일부와 같은 :

// call standard proc 
SQLCA.SubRtnName(parms); 

// call package.procedure 
SQLCA.CalcPenaltyAmt('stingarg', ref ls_ref_string_array); 

이것은 가정

// stored proc no package 
SUBROUTINE SubRtnName(args) RPCFUNC 

// function 
long ll_rtn = FUNCTION FuncRtnVal(int li_arg) RPCFUNC 

// standard proc with some in/out parameters 
SUBROUTINE CalcAmount(string LS_In1, ref string LS_Out2) RPCFUNC 

// package.procedure 
SUBROUTINE SubRtnName(args) RPCFUNC ALIAS FOR "PackageName.ProcName" 

// more complex package.procedure definition 
SUBROUTINE CalcPenaltyAmt(string LS_In1, ref string LS_Out2[]) RPCFUNC ALIAS FOR "Penalty.P_Calc_Amount" 

서브 루틴 또는 함수 이름 다음에 정의 된 이름을 사용하여 코드에서 프로 시저를 호출하는 방법 비 시각적 트랜잭션 객체가 응용 프로그램 객체의 SQLCA로 정의되고 설정되어 있습니다. 사용자 정의 트랜잭션 객체가 없으면 이와 같은 외부 함수를 정의 할 수 없습니다. 사용자가 수행하는 방식은 유형 비동기 트랜잭션 유형을 작성한 다음 사용자 정의 변수의 응용 프로그램 오브젝트에서 SQLCA를 n_tr_transaction으로 바꿉니 다.

관련 문제