MS SQL 2008 hỗ trợ TVP: một tính năng hữu ích để tải dữ liệu hàng loạt lên một quy trình được lưu trữ để xử lý.
Thay vì tạo một kiểu do người dùng định nghĩa, có thể tận dụng một định nghĩa bảng hiện có không? Ví dụ, có thể tạo một thủ tục được lưu trữ với chữ ký sau đây không?
CREATE PROCEDURE usp_InsertProductionLocation
@TVP **LocationTable** READONLY
Các tài liệu dường như cho thấy rằng điều này là không thể.
MẪU MÃ
/*
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