不是特定于用户会话。可以在多个用户会话之间重复使用。下面是一个示例:
使用表类型创建一个UDT:
CREATE TYPE EmployeeType AS TABLE (EmployeeID INT, LastName VARCHAR(50), FirstName VARCHAR(50))
然后可以在存储过程中使用这个表类型作为参数:
CREATE PROCEDURE usp_InsertEmployees @EmpList EmployeeType READONLY AS BEGIN INSERT INTO Employees SELECT * FROM @EmpList END
可以在不同的用户会话中多次调用这个存储过程,每次传入不同的EmployeeType表。
例如,在用户会话1中执行以下代码:
DECLARE @EmpList EmployeeType INSERT INTO @EmpList VALUES (1, 'Doe', 'John'), (2, 'Smith', 'Jane') EXEC usp_InsertEmployees @EmpList
然后,在用户会话2中执行以下代码:
DECLARE @EmpList EmployeeType INSERT INTO @EmpList VALUES (3, 'Jones', 'Bob'), (4, 'Lee', 'Sue') EXEC usp_InsertEmployees @EmpList
上述两个过程使用了相同的存储过程,但传入的参数是不同的。这样可以实现在多个用户会话之间复用UDT类型表。
上一篇:表值参数数据错误