10

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

更新

我试图创建一个临时表,但它似乎不起作用,因此我在这里问。

CREATE TABLE #Result
(
batchno_seq_no int
)
INSERT #Result EXEC storedp_UPDATEBATCH
SELECT * from #Result
DROP TABLE #Result
RETURN

存储过程更新批处理

delete from batchno_seq;
insert into batchno_seq default values;
select @batchno_seq= batchno_seq_no from batchno_seq
RETURN @batchno_seq

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

更新#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

这是更大的选择语句的一部分。任何帮助将非常感激。本质上,当我们迁移到 Oracle 时,此 SQL 已损坏。

4

6 回答 6

14

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

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

insert into @t(<column list here>)
    exec('storedp_Value');

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

于 2013-07-17T10:51:46.020 回答
5

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

CREATE TABLE #temp ( /* columns */ )

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

SELECT * FROM #temp
WHERE 1=1

DROP TABLE #temp

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

SELECT * FROM (ThisServer, 'Database.Schema.ProcedureName <params>')
于 2013-07-17T10:54:37.303 回答
2

关于在 SQL Server 中的存储过程之间共享数据的所有可能方法的最佳文章(在我看来),您可以在此处找到:http: //www.sommarskog.se/share_data.html

于 2014-04-30T15:27:21.923 回答
0

我的方法

select * into new_table  from (select t1.col1,t1.col2,..
from table1 t1 
union 
select t2.cola,t2.colb,..
from table2 t2) as union_table
于 2014-04-30T11:02:21.227 回答
0

尝试这个

更改“返回”

delete from batchno_seq;   
insert into batchno_seq default values;
select @batchno_seq= batchno_seq_no from batchno_seq
RETURN @batchno_seq

选择'

delete from batchno_seq;   
insert into batchno_seq default values;
select @batchno_seq= batchno_seq_no from batchno_seq
SELECT @batchno_seq
于 2013-07-17T11:52:29.533 回答
0

我肯定错过了什么。

由于您的存储过程不返回结果集,而是返回一个整数,使用存储过程的 RETURN 功能,您根本无法插入到任何表中(因为根本没有任何结果集返回)。

但是,您可以(假设这是迭代完成的,而不是在一个集合上)只需将返回值存储到局部变量中,然后将该变量的值插入到任何必要的表中。

但是,如果您只是想在 SSMS 中的查询窗口的结果中返回值,则执行 INSERT 和 SELECTING 是多余的。在我看来这样就足够了(在查询窗口中):

DECLARE @RetVal INT = 0;

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
EXEC @RetVal = storedp_UPDATEBATCH;
COMMIT TRANSACTION;
SELECT @RetVal;
  --OR
  --PRINT @RetVal;

如果这离基地很远,请提供“batchno_seq”的 DDL,也许我可以通过这种方式提供更好的帮助。

干杯!

于 2015-01-21T23:23:02.797 回答