Vous pouvez, cependant, n'importe quelle table. À partir de la documentation :
Pour les fonctions Transact-SQL, tous les types de données, y compris les types CLR définis par l'utilisateur et les types de table définis par l'utilisateur, sont autorisés à l'exception du type de données timestamp.
Vous pouvez utiliser des types de tableaux définis par l'utilisateur .
Exemple de type de tableau défini par l'utilisateur :
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
Donc ce que vous pouvez faire est de définir votre type de table, par exemple TableType
et définir la fonction qui prend le paramètre de ce type. Un exemple de fonction :
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
Le paramètre doit être READONLY. Et exemple d'utilisation :
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
Selon ce que vous voulez réaliser, vous pouvez modifier ce code.
MODIF : Si vous avez des données dans un tableau, vous pouvez créer une variable :
DECLARE @myTable TableType
Et prenez les données de votre table vers la variable
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table