链接函数/存储过程调用



我想编写存储过程或函数来评估即席查询或筛选器。 是否可以使用表值参数组合函数或存储过程?

假设我们有:

CREATE TABLE TestTbl(
    Id UNIQUEIDENTIFIER PRIMARY KEY,
    Name NVARCHAR(max),
    Quantity INT)

使用相应的用户定义表类型:

CREATE TYPE TResult AS TABLE(
    Id UNIQUEIDENTIFIER,
    Name NVARCHAR(max),
    Quantity INT)

基本全选功能:

CREATE FUNCTION Generator()
RETURNS TABLE
AS
RETURN SELECT Id, Name, Quantity
FROM TestTbl

一些接受TResult参数并且我想用来编写用户查询的过滤器,例如:

CREATE FUNCTION F1(
    @in TResult READONLY)
RETURNS TABLE
AS
RETURN SELECT Id, Name, Quantity
       FROM @In
       WHERE Name LIKE '%h%'

SELECT * FROM Generator()产生预期的结果。
我怎样才能做类似的事情?

SELECT *
FROM F1(Generator())

您必须创建类型为 TResult 的表。之后将此表作为参数传递。

SELECT *
FROM F1(@tresulttable)

最新更新