链接函数/存储过程调用

时间:2016-06-03 07:38:11

标签: tsql stored-procedures

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

假设我们有:

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())

1 个答案:

答案 0 :(得分:1)

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

SELECT *
FROM F1(@tresulttable)