所以我有这个存储过程,它接受一个 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/

10-15 18:35