Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zagnieżdżone instrukcje if w procedurze składowanej SQL Server Instrukcja SELECT

W tym celu spróbowałbym skorzystać z bardziej formalnego rozwiązania Dynamic SQL, takiego jak poniżej, biorąc pod uwagę zdefiniowane parametry wejściowe

DECLARE @SQL VARCHAR(MAX)

SET @SQL = '
SELECT

FROM
     database.dbo.table T
WHERE
     T.deleted = ''n'' '

--Do your conditional stuff here
IF @searchf1 <> '' THEN
    SET @SQL = @SQL + ' AND fieldf1 = ' + @searchf1 + ' AND fieldr1 = ' + @searchr1 + ''' '

--Finish the query
SET @SQL = @SQL + ' ORDER BY xxx'

EXEC(@SQL)

ZASTRZEŻENIE: Użycie dynamicznego SQL NIE jest czymś, co powinno być lekceważone i we WSZYSTKICH okolicznościach należy wziąć pod uwagę, że nie jesteś otwarty na ataki typu SQL injection, jednak w przypadku niektórych dynamicznych operacji wyszukiwania jest to jedna z najbardziej eleganckich trasa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybór N wierszy w SQL Server

  2. Jak wygenerować skrypty upuszczania unikalnych ograniczeń w bazie danych SQL Server — samouczek SQL Server / TSQL część 99

  3. Czy zmiana IF EXIST(SELECT 1 FROM) na IF EXIST(SELECT TOP 1 FROM) ma jakieś skutki uboczne?

  4. Przyznaj użytkownikowi msdb dostęp do profilu poczty bazy danych w programie SQL Server (T-SQL)

  5. Przekaż tabelę jako parametr do SQLCLR TV-UDF