针对存储过程SQL Server的SELECT

Nat*_*han 9 sql t-sql sql-server sql-server-2008

SELECT Val from storedp_Value 在SQL Server Management Studio的查询编辑器中,这可能吗?

UPDATE

我试图创建一个临时表但它似乎没有用,因此我在这里问.

CREATE TABLE #Result
(
batchno_seq_no int
)
INSERT #Result EXEC storedp_UPDATEBATCH
SELECT * from #Result
DROP TABLE #Result
RETURN
Run Code Online (Sandbox Code Playgroud)

存储过程UpdateBatch

delete from batchno_seq;
insert into batchno_seq default values;
select @batchno_seq= batchno_seq_no from batchno_seq
RETURN @batchno_seq
Run Code Online (Sandbox Code Playgroud)

我做错了什么,如何从查询窗口调用它?

更新#2

好的,我很感激这方面的帮助,方向或任何事情 - 这就是我想要实现的目标.

 select batchno_seq from (delete from batchno_seq;insert into batchno_seq default values;
 select *  from batchno_seq) BATCHNO 
 INTO TEMP_DW_EKSTICKER_CLASSIC
Run Code Online (Sandbox Code Playgroud)

这是更大的select语句的一部分.任何帮助将非常感激.基本上,当我们为Oracle迁移时,这个SQL就被打破了.

Gor*_*off 13

好吧,不.要从存储过程中进行选择,您可以执行以下操作:

declare @t table (
    -- columns that are returned here
);

insert into @t(<column list here>)
    exec('storedp_Value');
Run Code Online (Sandbox Code Playgroud)

如果以这种方式使用存储过程的结果编写存储过程,请认真考虑将代码更改为视图或用户定义的函数.在许多情况下,您可以使用更简单,更适合的构造替换此类代码.


T I*_*T I 5

这在sql server中是不可能的,你可以将结果插入临时表然后进一步查询

CREATE TABLE #temp ( /* columns */ )

INSERT INTO #temp ( /* columns */ )
EXEC sp_MyStoredProc

SELECT * FROM #temp
WHERE 1=1

DROP TABLE #temp
Run Code Online (Sandbox Code Playgroud)

或者您可以使用,OPENQUERY但这需要设置链接服务器,SQL是

SELECT * FROM (ThisServer, 'Database.Schema.ProcedureName <params>')
Run Code Online (Sandbox Code Playgroud)