2014-12-02 54 views
2

與呼叫從一個靈巧SQL過程。該過程包含光標。這個遊標被設置爲調用另一個調用Dynamics GP過程'taComputerChecklineinsert'的過程。工作應該是整個過程必須在工資單交易條目中插入交易。只有固定數量的42個交易被插入。我有超過42筆交易。如果我使用相同的參數從SQL服務器執行相同的過程,它會提供所需的結果。當我從靈巧來電時,問題就出現了。什麼可能是錯誤的?......我一直在這上很長時間......並且無法弄清楚這個問題。GP PROC只執行42個交易 - 敏捷調用一個SQL過程包含我有問題光標

+0

我試圖從光標排除econnect過程調用taComputerChecklineinsert,光標工作完全正常的剩餘運作,因爲它插入所需數量的交易到表中。這就結束了從光標調用econnect proc沒有問題。它做的靈巧調用「taComputerChecklineinsert」 – msgpdev10 2014-12-07 07:52:39

+0

的問題是與批創建,如果使用「taCreatePayrollBatchHeaderInsert」這PROC是制約交易的數量創造了一些東西。目前我嘗試通過手動創建批處理標題。那麼如果在調用taComputerChecklineinsert時指定了此批處理標題,則將插入所有必需的事務。 – msgpdev10 2014-12-07 12:39:47

回答

1

終於解決了。它與兩個econnect程序中的任何一個都沒有關係,即'taCreatePayrollBatchHeaderInsert'和'taComputerChecklineinsert'。

它曾提出由於taCreatePayrollBatchHeaderInsert批創建之前的SELECT語句。 select語句就位以選擇taCreatePayrollBatchHeaderInsert的參數。

當SELECT語句被註釋掉的代碼工作完全正常。

CREATE PROC [dbo].[GTG_PR_Create_ABS_Trx] 

    @CMPANYID INT 
, @UPRBCHOR INT -- 1 = Computer Check , 2 = Manual Check   
, @BACHNUMB CHAR(15)   
, @EMPLOYID CHAR(15)   
, @COMPTRTP SMALLINT -- Computer transaction type:1 = Pay code; 2 = Deduction; 3 = Benefit   
, @SALCHG SMALLINT -- Salary change ; required if passing a salary pay code:1 = Reallocate dollars; 2 = Reallocate hours;3=Reduce dollars;4=Reduce hours;=5=Additional amount   
, @UPRTRXCD CHAR(6) -- (OT , ABS)   
, @TRXBEGDT DATETIME   
, @TRXENDDT DATETIME   
, @Amount NUMERIC(19 , 5) -- Amount   
, @ProcessStatus INT OUT    
, @ErrorState INT OUT  
, @ErrString VARCHAR(255) OUT  

AS   


set @ErrorState = 0  
set @ErrString = ''  

-- Create batch if it doesn`t exist   
IF NOT EXISTS(SELECT 1 FROM DYNAMICS..UPR10304 WHERE BACHNUMB = @BACHNUMB AND CMPANYID = @CMPANYID AND UPRBCHOR = @UPRBCHOR)   

BEGIN   

**--SELECT @BACHNUMB  
-- ,@UPRBCHOR  
-- ,@ErrorState  
-- ,@ErrString**  


    EXEC taCreatePayrollBatchHeaderInsert   
     @I_vBACHNUMB = @BACHNUMB   
    , @I_vUPRBCHOR = @UPRBCHOR   
    , @O_iErrorState = @ErrorState OUT   
    , @oErrString = @ErrString OUT  

    -- Associate employee deduction code if association doesn`t exist   
    IF NOT EXISTS(SELECT 1 FROM UPR00500 WHERE EMPLOYID = @EMPLOYID AND DEDUCTON = @UPRTRXCD)   
    BEGIN   
    EXEC taCreateEmployeeDeduction   
    @I_vEMPLOYID = @EMPLOYID   
    , @I_vDEDUCTON = @UPRTRXCD   
    , @O_iErrorState = @ErrorState OUT   
    , @oErrString = @ErrString OUT      


    END   

    -- Create Transaction   

    EXEC taCreateComputerCheckLineInsert   

      @I_vBACHNUMB = @BACHNUMB   
      , @I_vEMPLOYID = @EMPLOYID   
      , @I_vCOMPTRTP = @COMPTRTP   
      , @I_vSALCHG  = @SALCHG   
      , @I_vUPRTRXCD = @UPRTRXCD   
      , @I_vTRXBEGDT = @TRXBEGDT   
      , @I_vTRXENDDT = @TRXENDDT   
      , @I_vVARDBAMT = @Amount 
      , @O_iErrorState = @ErrorState OUT   
      , @oErrString = @ErrString OUT      

END   


GO