从 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;
还有使用环回链接服务器和 OPENQUERY
:
的解决方法
SELECT *
FROM OPENQUERY(LOCALSERVER, 'EXEC [sp_Test]');
强烈推荐阅读:
我想使用 [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;
还有使用环回链接服务器和 OPENQUERY
:
SELECT *
FROM OPENQUERY(LOCALSERVER, 'EXEC [sp_Test]');
强烈推荐阅读: