您可以在SQL Server从T-SQL函数返回一个表2008在SQL Server返回多个表从T-SQL函数2008
我想知道是否有可能返回多个表。
这种情况是我有三个查询过滤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
所以,这两个查询之间的唯一区别是被过滤的表,如何(Where子句)。
我想知道我是否可以从函数返回Filter1 & Filter2。我也乐于提出解决这个问题的不同方法。
您不能从同一过程返回两个不同的结果集。如果你要处理结果,那么两个查询都要考虑UNION,INTERSECT或MINUS。 –