У меня есть более 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)