She*_*tin 1 sql t-sql sql-server sql-server-2008
您可以从SQL Server 2008中的T-SQL函数返回单个表.
我想知道是否可以返回多个表.
场景是我有三个查询过滤3个不同的表.每个表都根据我想从函数返回的5个过滤表进行过滤; 而不是在每个查询中复制和粘贴他们的创建.
这是复制和粘贴的简单示例:
FUNCTION GetValuesA(@SomeParameter int) RETURNS @ids TABLE (ID int) AS
WITH Filter1 As ( Select id FROM FilterTable1 WHERE Attribute=SomeParameter )
, Filter2 As ( Select id FROM FilterTable2 WHERE Attribute=SomeParameter )
INSERT INTO @IDs
SELECT ID FROM ValueTableA
WHERE ColA IN (SELECT id FROM Filter1)
AND ColB IN (SELECT id FROM Filter2)
RETURN
-----------------------------------------------------------------------------
FUNCTION GetValuesB(@SomeParameter int) RETURNS @ids TABLE (ID int) AS
WITH Filter1 As ( Select id FROM FilterTable1 WHERE Attribute=SomeParameter )
, Filter2 As ( Select id FROM FilterTable2 WHERE Attribute=SomeParameter )
INSERT INTO @IDs
SELECT ID FROM ValueTableB
WHERE ColA IN (SELECT id FROM Filter1)
AND ColB IN (SELECT id FROM Filter2)
AND ColC IN (SELECT id FROM Filter2)
RETURN
Run Code Online (Sandbox Code Playgroud)
因此,两个查询之间的唯一区别是正在过滤的表和HOW(Where子句).
我想知道我是否可以从函数中返回Filter1和Filter2.我也愿意就解决这个问题的不同方法提出建议.