ALTER PROCEDURE [dbo].[RichiesteManutenzione_SelectAll_sp]
@Stato AS nvarchar(10) = NULL
, @DataDa AS datetime = NULL
, @DataA AS datetime = NULL
, @Manutentore AS nvarchar(50) = NULL
AS
BEGIN
SET NOCOUNT ON
DECLARE @paramlist AS nvarchar(4000)
DECLARE @sqW AS nvarchar(4000)
DECLARE @sq AS nvarchar(4000)
-- IMPOSTA I PARAMETRI PER LA sp_executeSql
SET @paramlist = N'
@Stato AS nvarchar(10) = NULL
, @DataDa AS datetime = NULL
, @DataA AS datetime = NULL
, @Manutentore AS nvarchar(50) = NULL
'
-- IMPOSTA FILTRI
SET @sqW = ''
IF @Stato IS NOT NULL
SET @sqW = @sqW + N'AND Stato = @Stato '
IF @DataDa IS NOT NULL AND @DataA IS NOT NULL
SET @sqW = @sqW + N'AND DataIns BETWEEN @DataDa AND @DataA + 1 '
IF @Manutentore IS NOT NULL
SET @sqW = @sqW + N'AND Manutentore = @Manutentore '
-- IMPOSTA QUERY
SET @sq = N'
SELECT a.Id, a.Stato, a.Richiesta, a.Note, a.Richiedente,
a.DataIns, a.DataProgramma, a.DataChiusura, a.IdMacchina, a.MacchinaDenominazione,
a.IdElemento, a.ElementoDenominazione, a.Manutentore,
LTRIM(ISNULL(a.RespInternoCognome, '''') + '' '' + ISNULL(a.RespInternoNome, '''')) AS RespInterno
FROM RichiesteManutenzione_tb a '
IF LTRIM(@sqW) <> ''
SET @sq = @sq + N'WHERE 1 = 1 ' + @sqW + ' '
SET @sq = @sq + N'ORDER BY a.Id'
-- RESTITUISCE I RISULTATI
PRINT @sq
EXEC sp_executeSql @sq, @paramlist
, @Stato
, @DataDa
, @DataA
, @Manutentore
END
GO