我有一个存储过程,它返回一对输出参数 - ID和计算值。是否可以使用带有insert语句的触发器,直接插入这两个值?像这样的东西
CREATE TRIGGER Trig_FirstTable ON SecondTable AFTER UPDATE
AS
BEGIN
INSERT INTO FirstTable (OtherID, OtherValue)
VALUES (@otherID, @otherValue)
FROM StoredProcedure inserted.ID, inserted.Value, @otherID OUTPUT, @otherValue OUTPUT
END
答案 0 :(得分:1)
根据MSDN documentation,你可以使用INSERT和EXEC。 他们举了以下例子:
--INSERT...EXECUTE procedure example
INSERT author_sales EXECUTE get_author_sales
但我认为你的存储过程需要一个SELECT语句来返回数据而不是只填充输出参数。
答案 1 :(得分:0)
您可以从SP插入:
drop procedure uspTest
GO
create procedure uspTest
AS
select 1 as id, 'x' as val
union all
select 2,'y'
GO
drop table #temp
GO
create table #temp (
id int,
val char(1)
)
GO
insert into #temp (id,val)
EXECUTE uspTest
GO
select
*
from #temp
但您无法选择列的子集,因此如果您将来向SP添加更多输出,此方法显然会失败:
insert into #temp (id)
EXECUTE uspTest
另一种方法是将SP结果存储在变量中,然后将它们用于插入。