我有一个存储过程,返回行:

CREATE PROCEDURE MyProc
AS
BEGIN
    SELECT * FROM MyTable
END

我的实际过程稍微复杂一些,这就是为什么需要存储过程。

是否可以通过调用此过程来选择输出?

喜欢的东西:

SELECT * FROM (EXEC MyProc) AS TEMP

我需要使用SELECT TOP X、ROW_NUMBER和一个附加的WHERE子句来分页我的数据,我并不想将这些值作为参数传递。


当前回答

你要么想要一个表值函数,要么将你的EXEC插入一个临时表:

INSERT INTO #tab EXEC MyProc

其他回答

你要么想要一个表值函数,要么将你的EXEC插入一个临时表:

INSERT INTO #tab EXEC MyProc

你可以

创建一个表变量来保存 从存储的proc和 然后 的输出 将proc存储到表变量中, 然后 使用table变量 就像你对其他人一样 表格

... sql……

Declare @T Table ([column definitions here])
Insert @T Exec storedProcname params 
Select * from @T Where ...

听起来您可能只需要使用视图。视图允许将查询表示为表,以便可以查询视图。

没有必要使用临时表。

这就是我的解

SELECT  *  FROM    
OPENQUERY(YOURSERVERNAME, 'EXEC MyProc @parameters')
WHERE somefield = anyvalue

如果'DATA ACCESS'为假,

EXEC sp_serveroption 'SQLSERVERNAME', 'DATA ACCESS', TRUE

之后,

SELECT  *  FROM OPENQUERY(SQLSERVERNAME, 'EXEC DBNAME..MyProc @parameters')

它的工作原理。