SQL Server存儲過程輸入參數使用表值


轉載自:http://blog.csdn.net/smithliu328/article/details/9996149

 

2008之前如果我們想要將表作為輸入參數傳遞給SQL Server存儲過程使比較困難的,可能需要很多的邏輯處理將這些表數據作為字符串或者XML傳入。

 

在2008中提供了表值參數。使用表值參數,可以不必創建臨時表或許多參數,即可向 Transact-SQL 語句或例程(如存儲過程或函數)發送多行數據,這樣可以省去很多自定義的代碼。這樣的操作對於存儲過程內基於表函數的操作變得非常容易操作。

表值參數是使用用戶定義的表類型來聲明的。所以使用之前要先定義表類型。

/* 創建表類型.*/

CREATE TYPE LocationTableType AS TABLE

( LocationName VARCHAR(50)

, CostRate INT );

GO

 

/* 創建一個存儲過程以表值參數作為輸入. */

CREATE PROCEDURE dbo. usp_InsertProductionLocation

    @TVP LocationTableType READONLY

    AS

    SET NOCOUNT ON

    INSERT INTO Production.Location

           (Name

           ,CostRate

           ,Availability

           ,ModifiedDate)

        SELECT *, 0, GETDATE()

        FROM  @TVP;

        GO

 

 

/* 聲明表值參數變量.*/

DECLARE @LocationTVP ASLocationTableType;

 

/* 將數據插入表值變量*/

INSERT INTO @LocationTVP(LocationName, CostRate)

    SELECT Name, 0.00

    FROM Person.StateProvince;

 

/* 將變量傳遞給存儲過程*/

EXEC usp_InsertProductionLocation@LocationTVP;

GO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM