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

标签 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

它给我一个错误:

Msg 102, Level 15, State 1
Incorrect syntax near 'minute'.

最佳答案

首先,您不能将表达式用作存储过程的参数。尝试:

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

insert into @Precalculo (descripcion, Valor) 
  exec dbo.GetRankingTotalizador @Fecha, @d, @cadenas, @familias;

接下来,根据您的 SQL Server 版本,@table 变量并不总是 INSERT/EXEC 的有效目标。我忘记了这是什么时候生效的,但您可能需要改用#temp 表。

最后,强烈推荐:

insert into PrecalculoComparativaSemanal (missing, column, list)

关于sql - 将表达式传递给存储过程时, 'minute' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11632831/

相关文章:

sql - 无法执行查询

java - 模型未在 Hibernate 中映射用于日期 SQL 查询

sql-server - 更改现有约束/规则/程序的 Quoted_Identifier

javascript - 雪花和存储过程我们如何循环保存在内部阶段中的文件行?

java - 包含 select 和 update 语句的 Mysql 过程...如何从 Java 调用此类过程

sql - SQL/JDBC 中的内联 BLOB/BINARY 数据类型

mysql - 如何使用自连接选择最小值和最大值

mysql - 从一个表中选择在另一个表中多次出现的元素

sql-server - 从 SQL Server 表中选择备用行

MySQL 说 : Documentation #1064 - You have an error in your SQL syntax; on Stored Procedure