這篇文章主要介紹了SQL Server存儲過程中使用表值作為輸入參數示例,使用表值參數,可以不必創建臨時表或許多參數,即可向 Transact-SQL 語句或例程(如存儲過程或函數)發送多行數據,這樣可以省去很多自定義的代碼,需要的朋友可以參考下。
在2008之前如果我們想要將表作為輸入參數傳遞給SQL Server存儲過程使比較困難的,可能需要很多的邏輯處理將這些表數據作為字符串或者XML傳入。
在2008中提供了表值參數。使用表值參數,可以不必創建臨時表或許多參數,即可向 Transact-SQL 語句或例程(如存儲過程或函數)發送多行數據,這樣可以省去很多自定義的代碼。這樣的操作對於存儲過程內基於表函數的操作變得非常容易操作。
表值參數是使用用戶定義的表類型來聲明的。所以使用之前要先定義表類型。
/* 創建表類型.*/ create type XTableType as table(ID int,Names varchar(10)); go /* 創建一個存儲過程以表值參數作為輸入 */ create Procedure sp_test(@tp1 XTableType readonly) as set NoCount on select *,getdate() from @tp1; set NoCount off go /* 聲明表值參數變量.*/ declare @tp2 as XTableType; /* 將數據插入表值變量*/ Insert into @tp2(ID,Names) select 1,'a' union select 2,'b' union select 3,'c'; /* 將變量傳遞給存儲過程*/ EXEC sp_test @tp2; go