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

Wiele instrukcji „in” w klauzuli WHERE, które muszą być ze sobą zgodne

Możesz utworzyć typ tabeli i przekazywać przez nią wartości w ten sposób:

CREATE TYPE Suite_Lease AS TABLE
(
suite_id varchar(15) NOT NULL,
lease_id varchar(15) NOT NULL
)
GO
CREATE PROC DoUpdate
  @Params Suite_Lease READONLY,
  @uplift varchar(15),
  @code varchar(15)
AS
  update  property.lease_period  set
     scca_uplift = @uplift,
     scca_notes_code = @code
  from property.lease_period tab
  JOIN @params filt
    on tab.suite_id=filt.suite_id AND tab.lease_id=filt.lease_id

Dzięki temu zachowasz pamięć podręczną procedur suche i czyste, zamiast tego, jeśli używasz wielu „dużych” klauzul gdzie

Jak przekazać parametr tabeli do procedury składowanej (c#):

        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("suite_id", typeof (string)) {AllowDBNull = false, MaxLength = 15});
        dt.Columns.Add(new DataColumn("lease_id", typeof (string)) {AllowDBNull = false, MaxLength = 15});
        dt.Rows.Add("CCBG08", "205059");

        ... add more rows for match

        using (var c = new SqlConnection("ConnectionString"))
        {
            c.Open();
            using(var sc = c.CreateCommand())
            {
                sc.CommandText = "DoUpdate";
                sc.CommandType = CommandType.StoredProcedure;
                sc.Parameters.AddWithValue("@uplift", "110");
                sc.Parameters.AddWithValue("@code", "21006");
                sc.Parameters.Add(new SqlParameter("@Params", SqlDbType.Structured) { TypeName = null, Value = dt });
                sc.ExecuteNonQuery();
            }
        }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Proste funkcje SQL Server do rozwiązywania rzeczywistych problemów

  2. Zapytanie SQL do grupowania wyników na podstawie sekwencji

  3. sql wybierz pole na 2 kolumny

  4. Jak usunąć wszystkie klucze podstawowe ze wszystkich tabel w bazie danych SQL Server — część samouczka SQL Server / TSQL 65

  5. dołączona baza danych jest tylko do odczytu