将表达式传递给存储过程时,'minute'附近的语法不正确

Gon*_*o.- 2 sql sql-server stored-procedures syntax-error

我有以下代码:

insert into @Precalculo (descripcion, Valor) 
  exec dbo.GetRankingTotalizador 
    @Fecha, 
    DateAdd(minute, (-1), DateAdd(day, 1, @Fecha)), 
    @cadenas, 
    @familias

insert into PrecalculoComparativaSemanal 
  select @Fecha, @cadenas, @familias, [1], [2], [3], [4] FROM
  (select Descripcion, Valor from @Precalculo) p 
  PIVOT (min(Valor) FOR Valor in ([1], [2], [3], [4])) as pvt
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

消息102,级别15,状态1
'分钟'附近的语法不正确.

Aar*_*and 8

例如,您不能将表达式用作存储过程的参数.尝试:

DECLARE @d DATETIME;
SET @d =  DateAdd(minute, (-1), DateAdd(day, 1, @Fecha));

insert into @Precalculo (descripcion, Valor) 
  exec dbo.GetRankingTotalizador @Fecha, @d, @cadenas, @familias;
Run Code Online (Sandbox Code Playgroud)

接下来,根据您的SQL Server版本,@table变量并不总是有效的目标INSERT/EXEC.我忘了这个有效,但你可能需要使用#temp表.

最后,我强烈建议:

insert into PrecalculoComparativaSemanal (missing, column, list)
Run Code Online (Sandbox Code Playgroud)