MyBatis Callable with SQL 临时变量

MyBatis Callable with SQL temp variable

我正在尝试让存储过程使用 SQL 日期而不是 Java 日期。 但是我想在不修改SP的情况下做到这一点。

这就是我想做的。

    <select id="updateThing" statementType="CALLABLE">
        {
            DECLARE @tmp DATETIME
            SET @tmp = GETDATE()

            CALL  dbo.thingUpdate (
                #{..., javaType=java.lang.Integer, jdbcType = NUMERIC},
                ...,
                <choose>
                    <when test="datePassed != null">
                        @tmp,
                    </when>
                    <otherwise>
                        NULL,
                    </otherwise>
                </choose>
                ...
            )
        }
    </select>

我试过四处移动护腕,我试过在原地做 GETDATE() 并使用 TIMESTAMP,但它们似乎都触发了异常。

以上版本的错误是:

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '{'

如有任何建议,我们将不胜感激。

您可以创建另一个存储过程作为现有存储过程的包装器。如果需要,它应该获取日期并调用原始存储过程。