Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Множество изрази „in“ в клауза where, които трябва да съвпадат един с друг

Можете да създадете тип таблица и да прехвърлите стойностите през нея по следния начин:

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

Това ще запази вашия кеш на процедурите сухи и чисти, вместо това, ако използвате множество "големи" клаузи where

Как да предадете параметър на таблица в съхранена процедура (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. Подзаявка на sql сървър с разделен със запетая резултатен набор

  2. Как да използвам PHP за свързване към sql сървър

  3. Завършва ли използването на отворена SQL връзка

  4. Как да запазите един екземпляр на връзка на SQL Server отворен за множество заявки в C#?

  5. Разбиране на заключването на SQL Server за защитена среда на база данни