ただし、テーブルはありません。ドキュメントから:
Transact-SQL関数の場合、タイムスタンプデータ型を除き、CLRユーザー定義型とユーザー定義テーブル型を含むすべてのデータ型が許可されます。
ユーザー定義のテーブルタイプを使用できます 。
ユーザー定義のテーブルタイプの例:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
したがって、できることは、テーブルタイプを定義することです。たとえば、TableType
このタイプのパラメーターを受け取る関数を定義します。関数の例:
CREATE FUNCTION Example( @TableName TableType READONLY)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @name VARCHAR(50)
SELECT TOP 1 @name = LocationName FROM @TableName
RETURN @name
END
パラメータは読み取り専用である必要があります。使用例:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
達成したいことに応じて、このコードを変更できます。
編集: テーブルにデータがある場合は、変数を作成できます:
DECLARE @myTable TableType
そして、テーブルから変数にデータを取得します
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table