sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan opretter jeg en lagret procedure, der valgfrit vil søge i kolonner?

Mens COALESCE tricket er pænt, min foretrukne metode er:

CREATE PROCEDURE ps_Customers_SELECT_NameCityCountry
    @Cus_Name varchar(30) = NULL
    ,@Cus_City varchar(30) = NULL
    ,@Cus_Country varchar(30) = NULL
    ,@Dept_ID int = NULL
    ,@Dept_ID_partial varchar(10) = NULL
AS
SELECT Cus_Name
       ,Cus_City
       ,Cus_Country
       ,Dept_ID
FROM Customers
WHERE (@Cus_Name IS NULL OR Cus_Name LIKE '%' + @Cus_Name + '%')
      AND (@Cus_City IS NULL OR Cus_City LIKE '%' + @Cus_City + '%')
      AND (@Cus_Country IS NULL OR Cus_Country LIKE '%' + @Cus_Country + '%')
      AND (@Dept_ID IS NULL OR Dept_ID = @DeptID)
      AND (@Dept_ID_partial IS NULL OR CONVERT(varchar, Dept_ID) LIKE '%' + @Dept_ID_partial + '%')

Disse slags SP'er kan nemt kodegenereres (og gengenereres til tabelændringer).

Du har et par muligheder for at håndtere tal - afhængigt af om du ønsker eksakt semantik eller søgesemantik.



  1. Oracle:flere tabelopdateringer => ORA-01779:kan ikke ændre en kolonne, der er knyttet til en ikke-nøglebevaret tabel

  2. ORA-12704:tegnsæt uoverensstemmelse

  3. Bring Your Own Cloud (BYOC) vs. dedikeret hosting hos ScaleGrid

  4. PostgreSQL kan ikke begynde/afslutte transaktioner i PL/pgSQL