將表作為參數傳遞給SQL Server UDF
在SQL Server 中,可以將表作為參數傳遞給標量用戶定義函數( UDF)。但是,此功能並不限於所有表類型。
允許的表格類型
根據 Microsoft 文檔,所有資料類型都允許用於 UDF 參數,除了時間戳資料類型。因此,使用者定義的表格類型可以用作參數。
建立使用者定義的表格類型
為了說明這一點,請考慮以下表格類型:
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50)) GO
UDF 範例
現在,讓我們定義一個接受TableType 類型參數的UDF:
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)
單列的可選限製表
如果您希望將參數限制為具有單列的表,您可以修改UDF定義以包含以下檢查:
CREATE FUNCTION Example( @TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND TABLE_SCHEMA = 'dbo') > 1 RETURN ERROR(1, 1, 'Invalid parameter: table must have a single column.'); DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName RETURN @name END
填充變數來自現有表
要將資料從現有表傳遞到UDF 參數,您可以使用變數:
DECLARE @myTable TableType INSERT INTO @myTable(field_name) SELECT field_name_2 FROM my_other_table
以上是我可以將表格作為參數傳遞給 SQL Server UDF嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!