从 From 内部的 SP 中检索数据

Retrieve data from SP inside of From

我想使用 [sp_Test] 从语法代码 "FROM" 中检索数据,但它不起作用。你知道怎么解决吗?

谢谢!

create table datatable (id int,
                        name varchar(100),
                        email varchar(10),
                        phone varchar(10),
                        cellphone varchar(10),
                        none varchar(10)                        
                       );

insert into datatable values
  (1, 'productname', 'A', 'A', 'A', 'A'), 
  (2, 'cost', '20', 'A', 'A', 'A'),
  (3, 'active', 'Y', 'A', 'A', 'A');

insert into datatable values
  (4, 'productname', 'A', 'A', 'A', 'A'), 
  (5, 'cost', '20', 'A', 'A', 'A'),
  (6, 'active', 'Y', 'A', 'A', 'A');


insert into datatable values
  (7, 'productname', 'A', 'A', 'A', 'A'), 
  (8, 'cost', '20', 'A', 'A', 'A'),
  (9, 'active', 'Y', 'A', 'A', 'A');


CREATE PROCEDURE [sp_Test]
as
begin
    set nocount on

    SELECT a.name, a.email, a.phone
    FROM datatable a 

end

首先你不应该用 sp_ 前缀命名你的存储过程。这是非常坏的习惯,会与系统存储过程发生冲突。

其次,你不能简单地使用 SELECT FROM EXEC,但你可以创建临时 table/variable 来保存结果并查询它,如:

DECLARE @t AS TABLE ( name varchar(100),
                      email varchar(10),
                      phone varchar(10));

INSERT INTO @t
EXEC [dbo].[sp_Test];

SELECT *
FROM @t;

SqlFiddleDemo

还有使用环回链接服务器和 OPENQUERY:

的解决方法
SELECT * 
FROM OPENQUERY(LOCALSERVER, 'EXEC [sp_Test]');

强烈推荐阅读: