MS SQL 2008, verileri saklamak için saklanan bir işleme toplu olarak yüklemek için kullanışlı bir özellik olan TVP'yi destekler.
Kullanıcı tanımlı bir tür oluşturmak yerine, var olan bir tablo tanımından yararlanmak mümkün müdür? Örneğin, aşağıdaki imzayla depolanmış bir işlem oluşturmak mümkün müdür?
CREATE PROCEDURE usp_InsertProductionLocation
@TVP **LocationTable** READONLY
Belgeler bunun mümkün olmadığını gösteriyor.
BASİT KOD
/*
Sample code from:
http://msdn.microsoft.com/en-us/library/bb510489.aspx
*/
USE AdventureWorks2008R2;
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 [AdventureWorks2008R2].[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
[AdventureWorks2008R2].[Person].[StateProvince];
/* Pass the table variable data to a stored procedure. */
EXEC usp_InsertProductionLocation @LocationTVP;
GO
/*
The following is not part of the original source code:
*/
CREATE TABLE LocationTable(
LocationName VARCHAR(50)
, CostRate INT );
GO