在CTE中返回存储的结果

tjc*_*mon 6 sql-server stored-procedures common-table-expression

我能否将存储的proc调用到CTE中。我登录到仅RO的报告数据库。我对我们的UAT具有写权限,但想查询实时数据。

那么我可以在CTE中使用存储的proc吗?

with clientOwes as (
  exec des_Batch_GetApplicationClientOwesList
)     
select a.des_applicationnumber 
from des_heapplicationset a 
where a.des_heapplicationid in (select applicationid from clientowes)
Run Code Online (Sandbox Code Playgroud)

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

Tab*_*man 7

答案改编自评论中的对话:

您可以使用存储过程来填充表变量,“只读”访问权限确实允许您创建该表变量。您也不需要使用OpenRowSet来填充它。做就是了:

INSERT INTO @MyTableVariable
EXEC MyStoredProcedure
Run Code Online (Sandbox Code Playgroud)

我在很多地方都需要将存储的Proc结果视为一个表,可以与其他表进行JOIN或UNION的操作。