Tablo biçiminde Parametreler (Veritabanı Altyapısı)
Tablo değerli yeni bir parametre türü parametreleridir SQL Server 2008. Tablo değerli parametreler, kullanıcı tanımlı tablo türlerini kullanarak bildirilir.Tablo değerli parametreleri birden çok satır için veri göndermek için kullanabileceğiniz bir Transact-SQL deyim veya saklı yordam veya geçici tablo ya da birçok parametreleri oluşturmadan işlev gibi bir yordam.
Tablo değerli parametreleri gibi OLE DB ve ODBC parametre dizileri olduğu halde daha fazla esneklik ve daha yakın tümleştirmeyle sunar. Transact-SQL. Tablo değerli parametreleri de kümesi tabanlı işlemlerde katılmak için yararı vardır.
Not
Transact-SQL tablo değerli parametreleri yordamlar için verilerin bir kopyasını yapmak önlemek için başvuru geçirir.
Oluşturmak ve çalıştırmak Transact-SQL tablo değerli parametrelerle yordamlar ve onlardan çağırın. Transact-SQL Dil yönetilen kod, yönetilen ve yerel istemcilerin herhangi Kataloğu'na gidin.
Oluşturma ve Transact-SQL'DE tablo biçiminde parametreleri kullanma
Tablo değerli parametreleri iki birincil bileşeni vardır: a SQL Server tür ve parametre türü başvuruyor. Tablo değerli parametreleri oluşturmak için aşağıdaki adımları izleyin:
Tablo türü oluşturmak ve tablo yapısını tanımlar.
Nasıl oluşturulacağı hakkında bilgi için bir SQL Server yazın, bkz: Kullanıcı tanımlı tablo türleri. Nasıl tanımlanacağı hakkında daha fazla bilgi için bir tablo yapılandırmak için bkz: tablo (Transact-SQL) CREATE.
Tablo türünde bir parametreye sahip bir yordamı bildirin.Daha fazla bilgi için SQL Server yordamlar için bkz: PROCEDURE (Transact-SQL) CREATE ve (Transact-SQL) işlev CREATE.
Tablo türünde bir değişken bildirmek ve tablo türü başvuru.Değişkenleri bildirmek hakkında daha fazla bilgi için bkz: @ Local_variable (Transact-SQL) BILDIRIR..
Tablo değişkeni kullanarak doldurma bir EKLEME ekstresi.Veri ekleme hakkında daha fazla bilgi için bkz: Ekle ve SELECT kullanarak satır ekleme.
Tablo değişkeni oluşturup doldurulmuş sonra değişken için bir yordam geçirebilirsiniz.
Kapsam dışında yordam sonra tablo değerli parametresi artık kullanılabilir değil.Tür tanımında, kesilmeden kadar kalır.
Tablo değerli bir parametre kullanmak için SQL Server Yerel istemci için bkz: Tablo biçiminde Parametreler (SQL Server yerel istemci).
Tablo değerli bir parametre kullanmak için ADO.NET, ADO.NET belgelerine bakın.
Yararları
Tablo değerli parametreleri, daha fazla esneklik sağlar ve bazı durumlarda performansı geçici tablolara veya diğer yolları parametrelerinin listesini geçirilecek daha iyi.Tablo değerli parametreleri aşağıdaki yararları sağlar:
Bir istemciden gelen verilerin ilk popülasyon kilitlerine alın.
Basit bir programlama modeli sağlar.
Tek bir yordamında karmaşık iş mantığı eklemenizi sağlar.
Yuvarlak gezilerinde sunucuya azaltın.
Bir tablonun yapısını farklı önem düzeyi olabilir.
Kesinlikle yazdınız.
Istemci, sıralama düzeni ve benzersiz anahtarlar belirtmek etkinleştirin.
Kısıtlamalar
Tablo değerli parametreleri aşağıdaki kısıtlamaları vardır:
SQL Server Sütunlar tablo değerli parametrelerinin istatistik korumaz.
Giriş parametreleri READONLY olarak tablo değerli parametreleri geçirilmelidir. Transact-SQL yordamlar. DML işlemleri gibi UPDATE, DELETE, açamıyor veya bir tablo değerli parametresindeki bir yordam gövdesinde INSERT.
Hedefi olarak bir SELECT INTO ya da ÇALıŞTıRıLAMADı INSERT deyim, tablo değerli bir parametre kullanamazsınız.SELECT INTO, FROM yan tümcesinde veya bir INSERT EXEC dize veya saklı yordamı, tablo değerli bir parametresi olabilir.
Kapsam
Tablo değerli bir parametre, saklı yordam, işlev veya dinamik kapsamı Transact-SQL diğer parametreleri gibi metin. Benzer şekilde, tablo türünde bir değişken gibi bir DECLARE bildirimi kullanılarak oluşturulan tüm diğer yerel değişken kapsam vardır.Dinamik içinde tablo değerli değişkenleri bildirmek Transact-SQL ifadeler ve bu değişkenler, saklı yordamları ve işlevleri olarak tablo değerli parametreleri geçirin.
Güvenlik
Tablo değerli parametreler için izinler için nesne güvenlik modelini izleyin... SQL Server, kullanarak Transact-SQL Anahtar Sözcükler: CREATE, GRANT, DENY, ALTER, DENETIM, SAHIPLIĞINI ALıN, BAşVURULAR, yürütmek, GÖRÜNÜM TANıMıNı ve REVOKE.
Görünümler katalog
Tablo değerli parametreleriyle ilgili bilgi edinmek için aşağıdaki katalog görünümleri sorgu: sys.parameters (Transact-SQL), sys.Types (Transact-SQL), ve sys.table_types (Transact-SQL).
tablo-Parametreler ve değerli.BULK INSERT işlemi
Tablo değerli parametrelerini kullanarak değişkenleri kümesi tabanlı kullanmanın diğer yolları benzer; ancak, sık olarak tablo değerli parametreleri kullanarak büyük veri kümeleri için daha hızlı olabilir.Maliyet büyük bir başlangıç parametreleri tablo değerli farklı toplu işlemleri karşılaştırıldığında, 1000'den daha az satır eklemek için de, tablo değerli parametreleri gerçekleştirin.
Tablo değerli parametreler, geçici tablo önbelleğe alınan yararı yeniden kullandı.Bu tablo önbelleğe alma, eşdeğer BULK INSERT işlemi çok daha iyi ölçeklenebilirlik sağlar.Küçük bir satır ekleme işlemlerini kullanarak bir performans parametre listeleri kullanarak kazanılan veya deyimleri yerine, operasyonlar BULK INSERT veya tablo değerli parametreleri batched.Ancak, bu yöntemleri, program uygun olan ve satır arttıkça performans hızlı bir şekilde azaltır.
Tablo değerli parametreleri eşit iyi veya eşdeğer bir parametre dizisi uygulaması daha iyi gerçekleştirin.
Aşağıdaki tablo kullanmak için hangi teknolojiyi ekleme işlemlerini hızına göre gösterir.
Veri kaynağı |
Sunucu mantığı |
Satır sayısı |
En iyi teknoloji |
---|---|---|---|
Sunucudaki biçimlendirilmiş bir veri dosyası |
Doğrudan ekleme |
< 1000 |
TOPLU EKLEME |
Sunucudaki biçimlendirilmiş bir veri dosyası |
Doğrudan ekleme |
> 1000 |
TOPLU EKLEME |
Sunucudaki biçimlendirilmiş bir veri dosyası |
Karmaşık |
< 1000 |
Tablo değerli parametreleri |
Sunucudaki biçimlendirilmiş bir veri dosyası |
Karmaşık |
> 1000 |
TOPLU EKLEME |
Uzak istemci işlemi |
Doğrudan ekleme |
< 1000 |
Tablo değerli parametreleri |
Uzak istemci işlemi |
Doğrudan ekleme |
> 1000 |
TOPLU EKLEME |
Uzak istemci işlemi |
Karmaşık |
< 1000 |
Tablo değerli parametreleri |
Uzak istemci işlemi |
Karmaşık |
> 1000 |
Tablo değerli parametreleri |
Örnekler
Aşağıdaki örnek kullanır. Transact-SQL ve bir tablo değerli bir parametre türü oluşturmak Bu başvuru parametre listesi doldurun ve sonra da bir saklı yordam için değerleri geçirmek için bir değişken gösterilmiştir.
USE AdventureWorks;
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 usp_InsertProductionLocation
@TVP LocationTableType READONLY
AS
SET NOCOUNT ON
INSERT INTO [AdventureWorks].[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
[AdventureWorks].[Person].[StateProvince];
/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO