我想编写存储过程或函数来评估即席查询或过滤器。是否可以使用表值参数组合函数或存储过程?
假设我们有:
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())
答案 0 :(得分:1)
您必须创建类型为TResult的表。然后将此表作为参数传递。
SELECT *
FROM F1(@tresulttable)