在CTE中返回存储的Proc结果

时间:2015-03-10 16:11:18

标签: sql-server stored-procedures common-table-expression

我是否可以将存储过程调用到CTE中。我有一个登录我们的报告数据库,只有RO。我有权访问我们的UAT,但想查询实时数据。

那么我可以在CTE中使用存储过程吗?

with clientOwes as (

exec des_Batch_GetApplicationClientOwesList

) 

select a.des_applicationnumber 
from des_heapplicationset a 
where a.des_heapplicationid in (select applicationid from clientowes)

结果是:消息156,级别15,状态1,行3 关键字'exec'附近的语法不正确。

谢谢, 乔

1 个答案:

答案 0 :(得分:5)

通过评论中的对话改编的答案:

您可以使用存储过程填充表变量,Read Only访问允许您创建。您也不需要使用OpenRowSet来填充它。只是做:

INSERT INTO @MyTableVariable
EXEC MyStoredProcedure

我自己在很多地方都这样做,我需要将Stored Proc结果视为一个表格,我可以与其他表格一起加入或联合。