MyBatis Вызывается с временной переменной SQL - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь получить хранимую процедуру, чтобы использовать дату 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 '{'

Любой совет будет оценен.

1 Ответ

1 голос
/ 03 октября 2019

Вы можете создать другую хранимую процедуру, которая действует как обертка для существующей. При необходимости он должен получить дату и вызвать исходную хранимую процедуру.

...