Tablo Valued Parametreler (veritabanı altyapısı) kullanma

Tablo valued parametreler, kullanıcı tanımlı tablo türleri kullanılarak bildirilir. Tablo değerli parametreleri birden çok satır veri göndermek için kullanabileceğiniz bir Transact-SQLifadesi ya da saklı yordam veya işlev geçici bir tablo ya da birçok parametre oluşturmadan, gibi rutin bir.

Tablo değerli parametreleri parametre dizileri ole db ve odbc gibi ama daha fazla esneklik ve daha yakın entegrasyon sunan Transact-SQL. Tablo değerli parametreleri de kümesi tabanlı işlemlerde katılmak mümkün olmanın yararı var.

Transact-SQLTablo değerli parametreleri yordamları için giriş verilerinin kopyasını yapmaktan kaçınmak için referans olarak geçer. Oluşturma ve yürütme Transact-SQLtablo değerli parametrelerle rutinleri ve onlardan Transact-SQLyönetilen kod ve herhangi bir yerel istemci yönetilen dili.

Bu Konuda

Faydaları

Kısıtlamalar

Tablo değerli parametreleri vs. Toplu ekleme işlemleri

Örnek

Faydaları

Tablo değerli bir parametre saklı yordam, işlev veya dinamik kapsamlı Transact-SQLmetin tam olarak diğer parametreleri gibi. Benzer şekilde, tablo türünde bir değişken kapsamı gibi bir declare deyimi kullanılarak oluşturulmuş herhangi bir yerel değişken vardır. Tablo valued dinamik değişkenler bildirebilirsiniz Transact-SQLifadelerini ve saklı yordamları ve işlevleri gibi tablo değerli parametreleri bu değişkenler geçmektedir.

Tablo değerli parametreleri daha fazla esneklik sağlar ve bazı durumlarda performansı geçici tablolara veya parametreleri listesini geçmek için başka yollar daha iyi. Tablo değerli parametreleri aşağıdaki yararları sağlar:

  • Bir istemcinin verilerini ilk popülasyon kilitleri elde değil.

  • Basit bir programlama modeli sağlar.

  • Karmaşık iş mantığı içeren tek bir yordam sağlar.

  • Tur gezileri sunucuya azaltın.

  • Bir tablo yapısı farklı önem düzeyi sağlayabilirsiniz.

  • Güçlü yazılmalıdır.

  • Sıralama düzenini ve benzersiz anahtarlar belirtmek istemci sağlar.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Kısıtlamalar

Tablo değerli parametreleri aşağıdaki kısıtlamaları vardır:

  • SQL ServerTablo değerli parametreleri sütunları istatistikleri tutmaz.

  • Tablo değerli parametreleri geçti, giriş readonly parametre olarak Transact-SQLrutinleri. update, delete, gibi dml işlemleri gerçekleştirmek veya tablo değerli bir parametre bir rutin gövdesi üzerinde ekleme yapamazsınız.

  • select INTO veya exec INSERT deyimi hedef tablo değerli bir parametre kullanamazsınız. Tablo değerli bir parametre veya saklı yordam select INTO yan veya INSERT exec dize olabilir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Tablo değerli parametreleri vs.Toplu ekleme işlemleri

Tablo değerli parametreleri kullanarak, değişkenleri kümesi tabanlı kullanmanın diğer yolları karşılaştırılabilir; Ancak, tablo değerli parametreleri sık kullanılması büyük veri kümeleri için hızlı olabilir. Tablo değerli parametreleri daha bir büyük başlangıç maliyeti var. toplu işlemleri karşılaştırıldığında, tablo değerli parametreleri de az 1000 satırlar eklemek için gerçekleştirin.

Tablo değerli parametreleri, geçici tablo önbelleğe almayı yararlı yeniden. Bu tablo önbellek karşılığı bulk INSERT işlemlerini daha iyi ölçeklenebilirlik sağlar. Küçük satır ekleme işlemleri kullanarak küçük performans yararı parametre listeleri kullanarak elde edilebilir veya tablolar Ekle toplu işlemleri veya tablo değerli parametreleri yerine toplu. Ancak bu yöntemlerin daha az programa uygun ve satır arttıkça performans hızla azalır.

Tablo değerli parametreleri eşit derecede iyi veya eşdeğer parametre dizisi uygulaması daha iyi yapmak.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Örnek

Aşağıdaki örnek Transact-SQLve bir tablo valued parametre türü oluşturmak için bu başvuru, parametre listesi doldurun ve sonra değerleri bir saklı yordam için bir değişken gösterilmiştir.

USE AdventureWorks2012;
GO

/* Create a table type. */
CREATE TYPE LocationTableType AS TABLE 
( LocationName VARCHAR(50)
, CostRate INT );
GO

/* Create a procedure to receive data for the table-valued parameter. */
CREATE PROCEDURE dbo. usp_InsertProductionLocation
    @TVP LocationTableType READONLY
    AS 
    SET NOCOUNT ON
    INSERT INTO AdventureWorks2012.Production.Location
           (Name
           ,CostRate
           ,Availability
           ,ModifiedDate)
        SELECT *, 0, GETDATE()
        FROM  @TVP;
        GO

/* Declare a variable that references the type. */
DECLARE @LocationTVP AS LocationTableType;

/* Add data to the table variable. */
INSERT INTO @LocationTVP (LocationName, CostRate)
    SELECT Name, 0.00
    FROM AdventureWorks2012.Person.StateProvince;

/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Ayrıca bkz.

Başvuru

CREATE TYPE (Transact-SQL)

DECLARE @local\_variable (Transact-SQL)

sys.types (Transact-sql)

kullanmasys.objectsvesys.parametersKullanıcı (Transact-sql)

sys.parameter_type_usages (Transact-sql)

procedure (Transact-sql) oluştur

CREATE FUNCTION (Transact-SQL)