Есть ли инструмент для преобразования хранимой процедуры SQL в строку с EscapeConcatenation? - PullRequest
0 голосов
/ 14 января 2019

У меня есть более 50 хранимых процедур, которые мне нужно преобразовать, чтобы я мог использовать в них динамический оператор where. Мой выбор состояния выглядит так в SQL. Мне нужно изменить это на строку varchar (max) и использовать Execute (@SQL) или sp_executesql @ SQL

Есть ли какой-либо онлайн-инструмент или купленный инструмент, который может преобразовать это условие where в правильный формат строки с правильными escape-последовательностями для @Parameters?

;WITH TempResult AS(SELECT  
        DataDt
        ,EffDt
        ,SettlementDt
        ,BankId
        ,SeqNum
        ,DeleteFlag
        ,LoanNum
        ,BondLoanSaleType
        ,PurchaseProceedsAmt
        ,SettledPrinBal
        ,IntRecMiscAmt
        ,BuydownCashClearingAmt
        ,ARClearingDAPAmt
        ,ARCashClearingAmt
        ,ARSuspenseAmt
        ,ImpoundsSoldLoansAmt
        ,BondCommitmentFeesAmt
        ,SRPAmt
        ,OtherFeeAmt
        ,ActiveFlagBit = case ActiveFlagBit when 1 then 1 else 0 end
        ,UploadByCfcUserId
        ,UploadDtTm
        ,UploadedFileName
        ,ApprovedFlagBit   = case ApprovedFlagBit when 1 then 1 else 0 end
        ,ApproveRejectByCfcUserId
        ,ApproveRejectDtTm
        ,ApprovalTaskId
        ,ArchiveDtTm
  FROM guiUploadBondLoanSales u (nolock)
    WHERE  
        (@LoanList.exist('/NewDataSet/Table1') = 0 or LoanNum in (select LoanNum from #tmpLoan))
        and (@DataDtTo = '01/01/1900' or DataDt between @DataDtFrom and @DataDtTo)
        and (@SettlementDtTo = '01/01/1900' or SettlementDt between @SettlementDtFrom and @SettlementDtTo)
        and (@ShowOnlyLatest = 0 or (ActiveFlagBit = 1 and ApprovedFlagBit = 1 and u.DataDt = 
            (select max(DataDt) from guiUploadBondLoanSales u1 (nolock)
                where u1.LoanNum = u.LoanNum and u1.ActiveFlagBit = 1 and u1.ApprovedFlagBit = 1)))
        and (@TaskId = 0 or ApprovalTaskId = @TaskId)
        and (@FileName = '' or UploadedFileName like '%' + @FileName + '%')
        and (@UploadedByUsers.exist('/NewDataSet/Table1') = 0 or UploadByCfcUserId in (select UploadedByUsers from #UploadedByUsers))
        and (@ApprovedByUsers.exist('/NewDataSet/Table1') = 0 or ApproveRejectByCfcUserId in (select ApprovedByUsers from #ApprovedByUsers))
        and (@UploadDtTo = '01/01/1900' or UploadDtTm between @UploadDtFrom and @UploadDtTo)
        and (@ApprovedDtTo = '01/01/1900' or ApproveRejectDtTm between @ApprovedDtFrom and @ApprovedDtTo)
        and (@HideArchive = 0 or u.ArchiveDtTm = '1/1/1900' )
    ), TempCount AS (  SELECT COUNT(*) AS MaxRows FROM TempResult) SELECT *, TempCount.MaxRows FROM TempResult, TempCount ORDER BY TempResult.UploadDtTm    OFFSET @OFFSET ROWS FETCH NEXT @FETCH ROWS ONLY OPTION(RECOMPILE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...