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 '{'
如有任何建议,我们将不胜感激。
您可以创建另一个存储过程作为现有存储过程的包装器。如果需要,它应该获取日期并调用原始存储过程。
我正在尝试让存储过程使用 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 '{'
如有任何建议,我们将不胜感激。
您可以创建另一个存储过程作为现有存储过程的包装器。如果需要,它应该获取日期并调用原始存储过程。