Check scheme.plitempm for any orphaned entries against plpy tables, found to be caused by third party app not Sage Line 500.
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Christopher Smith -- Create date: 10/02/2022 -- Description: Check scheme.plitempm for any orphaned entries -- ============================================= -- Change Log -- ============================================= -- 1.0 - First Version -- ============================================= -- exec usp_email_orphan_payment_list_entries -- ============================================= CREATE PROCEDURE usp_email_orphan_payment_list_entries AS BEGIN SET NOCOUNT ON; --Populate Temp Table and format table name select 'plpy' + MAX(payment_list) +'m' as payment_list,'n' as "tableexists", ROW_NUMBER() OVER(ORDER BY payment_list ASC) AS Rowno into #tempjobs from [scheme].[plitempm] where payment_list != '' group by payment_list --Check if table exists declare @jobno INT = 0, @maxjobno int, @currenttable NVARCHAR(14), @sqlquery NVARCHAR(400) set @maxjobno = (select COUNT(*) from #tempjobs) WHILE @jobno <= @maxjobno BEGIN set @jobno = @jobno + 1 set @currenttable = (select payment_list from #tempjobs where @jobno = Rowno) set @sqlquery = ('update #tempjobs set #tempjobs.tableexists = (select (CASE WHEN COUNT(*) > 0 THEN ''y'' ELSE ''n'' END) from dbo.sysobjects t1 INNER JOIN #tempjobs on t1.name = #tempjobs.payment_list where #tempjobs.payment_list LIKE ''' + @currenttable +''') where #tempjobs.payment_list LIKE ''' + @currenttable +'''') --print @sqlquery EXEC(@sqlquery) END --Remove entries where the table exists Delete from #tempjobs where tableexists = 'y' --If there is more than one result email if (select count(*) from #tempjobs) > 0 begin -------------------------------------------------------------------------------------------------------------------------- ---- Set variables -------------------------------------------------------------------------------------------------------------------------- declare @email char(120), @ccmail char(120), @wh char(2), @header NVARCHAR(MAX), @body varchar(max), @footer varchar(max), @tableHTML NVARCHAR(MAX) -------------------------------------------------------------------------------------------------------------------------- ---- Create Header -------------------------------------------------------------------------------------------------------------------------- SET @header = N'<font size="4" face="arial" color="black"> Orphan entries found in scheme.plitempm on SGE_BEBV!</font>' + N'<font size="4" face="arial" color="black"> Invoices will be missed from newly generated payment lists, check scheme.plitempm and change field payment_list to blank where the payment list is not found to exist.</font>' + N'<table border="1">' + N'<tr><th>Payment List</th></tr>' -------------------------------------------------------------------------------------------------------------------------- ---- Create Detail -------------------------------------------------------------------------------------------------------------------------- select @body = ( select td = rtrim(isnull((payment_list),'')),'' from #tempjobs FOR XML PATH('tr') ) -------------------------------------------------------------------------------------------------------------------------- ---- Create Footer -------------------------------------------------------------------------------------------------------------------------- select @footer = N'</table>' + N'<p></p>' + N'<p> Regards.</p>' + N'<p><font size="2" face="calibri"><Name></p>' + N'<p> </p>' + N'<p>usp_email_orphan_payment_list_entries on sge_bebv</p>' -------------------------------------------------------------------------------------------------------------------------- ---- Add Formating -------------------------------------------------------------------------------------------------------------------------- set @header = REPLACE(@header, '<th>', '<th align=center bgcolor=#EEEEF4><font size="2" face="calibri">') set @header = REPLACE(@header, '</th>', '</font></th>') set @body = REPLACE(@body, '<td>', '<td align=center bgcolor=#F8F8FD><font size="2" face="calibri">') set @body = REPLACE(@body, '</td>', '</font></td>') set @footer = REPLACE(@footer, '<p>', '<p> <font size="2" face="calibri">') set @footer = REPLACE(@footer, '</p>', '</font></p> ') set @tableHTML = @header + @body + @footer + '</table></div>' set @tableHTML = '<div style="color:Black; font-size:11pt; font-family:Calibri; width:100px;">' + @tableHTML + '</div>' -----Send Email--------------------------------------------------------------------------------------------------------- EXEC msdb.dbo.sp_send_dbmail @profile_name = '<Insert email profile name>', @recipients = '<Insert Email Address>', @body = @tableHTML, @body_format = 'HTML', @subject = 'Orphaned Payment List Entries' end -------------------------------------------------------------------------------------------------------------------------- ---- Clearup temp tables -------------------------------------------------------------------------------------------------------------------------- drop table #tempjobs END GO