2014-12-23 56 views
0

我试图执行sp作为子查询,并将sp的结果集作为外部查询的列。这样结合sp结果select作为列

Select U.FirstName , (exec SomeSP) as columnFromSP from User U

有些事情是这样的可能,我搜索了很多,但发现在谷歌没有。

更新

因为我想没有#TEMP表

+0

你不能这样做。您必须更改SP或将结果存储在临时表中并加入您的用户表 – jazzytomato

+0

您可以将您的SomeSP转换为表值函数,然后可以在没有临时表的情况下执行此操作。 –

+0

肖恩你可以添加任何示例? – Ancient

回答

0

如果您能够将您的USP转换为表值UDF,你会使用UDF在FROM声明。

CREATE FUNCTION dbo.SomeUDF 
( 
    -- Add the parameters for the function here 
    @param varchar(1000) 
) 
RETURNS TABLE 
AS 
RETURN 
(

    SELECT @param as Value 
) 
GO 

SELECT 
    a.Value, 
    'B' as Value2 
FROM dbo.SomeUDF('ABC') a 
0

不可能做我不能使用#temp表,但你可以解决它

  • 创建临时表&将程序结果插入 它
  • 现在将用户表与临时表连接起来,并将se两个表

但是这是假定LECT你想要的
列,你必须从存储过程(一个你可以匹配到一个字段在用户表)返回一个可连接的表达。如果返回单行存储过程中,使用的类似1 = 1或某事的条件

0
-- Declare a temp table and column(for eg you have only 1 column) 
CREATE TABLE #TEMP 
(
    FirstName VARCHAR(50)  
) 

-- The results after execution will be inserted to this table 
INSERT INTO #TEMP 
Exec SomeSP 'Params' 

-- Select records from both tables in all combinations 
SELECT U.FirstName , COL1 as columnFromSP 
from User U 
CROSS JOIN #TEMP 
+0

我修改了结果。你可以试试这个@Ancient –