Trovato qualcosa che può andare.
Guarda qui.
Posso creare in SQL una query testuale ed eseguirla direttamente in SQL Server con un parametro:
codice:
DECLARE @SqlStatement nvarchar(1000)
DECLARE @Prefix nvarchar(7)
SET @Prefix = ' WHERE '
-- Definisco la parte di SELECT
SET @SqlStatement = 'SELECT idCustomer, CustomerName, CustomerEMail,
CustomerBirthday, CustomerSex FROM tabCustomers'
-- Se ho il filtro sul CustomerName
IF (@CustomerName <> '')
BEGIN
SET @SqlStatement = @SqlStatement + @Prefix + ' CustomerName LIKE ''%' +
CONVERT(nvarchar(30), REPLACE(@CustomerName, '''', '''''')) + '%'''
SET @Prefix = ' AND '
END
-- Se ho il filtro sul CustomerEMail
IF (@CustomerEMail <> '')
BEGIN
SET @SqlStatement = @SqlStatement + @Prefix + ' CustomerEMail LIKE ''%' +
CONVERT(nvarchar(30), REPLACE(@CustomerEMail, '''', '''''')) + '%'''
SET @Prefix = ' AND '
END
-- Se ho il filtro sul CustomerBirthday
IF ((NOT @CustomerBirthDayStart IS NULL) AND (NOT @CustomerBirthDayEnd IS NULL))
BEGIN
SET @SqlStatement = @SqlStatement + @Prefix + ' CustomerBirthDay BETWEEN ''' +
CONVERT(nvarchar(30), @CustomerBirthDayStart) + ''' AND ''' +
CONVERT(nvarchar(30), @CustomerBirthDayEnd) + ''''
SET @Prefix = ' AND '
END
-- Se ho il filtro sul CustomerSex
IF (NOT @CustomerSex IS NULL)
BEGIN
SET @SqlStatement = @SqlStatement + @Prefix + ' CustomerSex = ' + CONVERT(nvarchar(30), @CustomerSex)
END
-- Se devo applicare l'ordinamento
IF (NOT @SortExpression IS NULL)
SET @SqlStatement = @SqlStatement + ' ORDER BY ' + @SortExpression
-- Eseguo lo statement di SELECT
EXEC sp_executesql @SqlStatement
GO