SELECT Val from storedp_Value
可能吗?
更新
我试图创建一个临时表,但它似乎没有用,因此我在这里问。
CREATE TABLE #Result
(
batchno_seq_no int
)
INSERT #Result EXEC storedp_UPDATEBATCH
SELECT * from #Result
DROP TABLE #Result
RETURN
存储过程UpdateBatch
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
这是较大的select语句的一部分。任何帮助将非常感激。基本上,当我们为Oracle迁移时,这个SQL就被打破了。
答案 0 :(得分:13)
嗯,不。要从存储过程中进行选择,您可以执行以下操作:
declare @t table (
-- columns that are returned here
);
insert into @t(<column list here>)
exec('storedp_Value');
如果以这种方式使用存储过程的结果和编写了存储过程,请认真考虑将代码更改为视图或用户定义的函数。在许多情况下,您可以使用更简单,更适合的构造替换此类代码。
答案 1 :(得分: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>')
答案 2 :(得分:1)
关于在SQL Server中存储过程之间共享数据的所有可能方法的最佳文章(在我看来),您可以在此处找到:http://www.sommarskog.se/share_data.html
答案 3 :(得分: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
答案 4 :(得分: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
答案 5 :(得分: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,也许我可以提供更好的帮助。
干杯!