所以我有这个存储过程,它接受一个 DATETIME 参数,日期。它将该值插入另一个表并返回该 ID。
让我们调用这个存储过程 getTimeID。其中 DimTime 是它插入 DATETIME 参数的表。
所以我想复制到TableB ID 和TimeID,而不是ID 和日期。
我正在努力:
INSERT INTO [TableA].dbo.Main (ID, timeID)
SELECT ID,
(EXEC getTimeID date)
FROM [TableB].dbo.Main
但是我无法让 EXEC 上的语法正常工作。
请帮忙。
最佳答案
从存储过程插入的语法是:
INSERT INTO TheTable (col1, col2) EXEC TheStoredProcedure
它非常不灵活:表必须与存储过程的确切列布局相匹配。
一种可能的解决方案是将存储过程的结果存储到表变量中。例如:
declare @id int
select @id = ID
from [TableB].dbo.Main
declare @t table (TimeID int)
insert @t (TimeID) exec getTimeID '2011-01-20'
declare @TimeID int
select @TimeID = TimeID
from @t
insert [TableA].dbo.Main values (@ID, @TimeID)
关于sql-server - 从 INSERT INTO 中调用存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4748899/