我想编写存储过程或函数来评估即席查询或筛选器。 是否可以使用表值参数组合函数或存储过程?
假设我们有:
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)