Stored procedures 从中的SP检索数据
我想使用[sp_Test]从语法代码“from”中检索数据,但它不起作用。你知道怎么解决吗 谢谢Stored procedures 从中的SP检索数据,stored-procedures,sql-server-2012,Stored Procedures,Sql Server 2012,我想使用[sp_Test]从语法代码“from”中检索数据,但它不起作用。你知道怎么解决吗 谢谢 create table datatable (id int, name varchar(100), email varchar(10), phone varchar(10), cellphone varcha
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\ucode>前缀命名存储过程。这是一个非常坏的习惯,可能会与系统存储过程发生冲突
其次,您不能简单地使用SELECT FROM EXEC
,但您可以创建临时表/变量来保存结果并按如下方式进行查询:
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
前缀命名存储过程。这是一个非常坏的习惯,可能会与系统存储过程发生冲突
其次,您不能简单地使用SELECT FROM EXEC
,但您可以创建临时表/变量来保存结果并按如下方式进行查询:
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]');
我强烈建议阅读: