ColdFusion 2016 и хранимый процесс с ошибкой неверного символа

Я пробую существующий код в установке CF 2016... Я получаю эту ошибку

"[Macromedia][Драйвер JDBC DB2][DB2] НЕЗАКОННЫЙ СИМВОЛ =; ДЕЙСТВИТЕЛЬНЫЕ СИМВОЛЫ…"

указанная строка является параметром хранимого вызова proc, который выглядит следующим образом:

<cfstoredproc datasource="#application.dsn#" procedure="LIVE.STOPS">
    <cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" dbvarname="STOPID" value="#val( variables.procstopid )#" null="no">
    <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="TRIPID" value="#val( url.tripId )#" null="no">
</cfstoredproc>

Я не могу найти никаких упоминаний в строке об изменении хранимого тега proc - может быть, драйвер DB2? Я ищу любой вклад. Благодарю.

Другая информация; Windows10, Apache2.4, подключение к DB2 v10.

@pendo, Вот хранимый процесс - следует отметить, что я сократил некоторые из sql, но SP работает и уже долгое время работает в приложении под управлением CF10.

CREATE OR REPLACE PROCEDURE LIVE.STOP(
    IN stopId BIGINT DEFAULT 0,
    IN tripId INTEGER DEFAULT 0
) LANGUAGE SQL

BEGIN

DECLARE updateTripId INTEGER DEFAULT 0;
DECLARE minStopId BIGINT DEFAULT 0;
DECLARE maxStopId BIGINT DEFAULT 0;

DECLARE TripSearch_cursor CURSOR FOR 
    SELECT s1.fkTripsId
    FROM live.paymentsTripsStops s1
    JOIN  live.Trips t ON s1.fkTripsId = t.Id
    WHERE s1.fkStopsId = stopId 
    FETCH FIRST 1 ROWS ONLY;

DECLARE minMaxStop_cursor CURSOR FOR 
    SELECT
       COALESCE(
           (
                SELECT s.Id
                FROM  live.Stops s
                JOIN  live.Trips t ON s.fkTripsId = t.Id
                ORDER BY s.Sequence
                FETCH FIRST 1 ROWS ONLY
           ),
           0
       ) AS firstStopId,
       COALESCE(
           (
               SELECT s.Id
                FROM  live.Stops s
                JOIN  live.Trips t ON s.fkTripsId = t.Id
                ORDER BY s.Sequence DESC
                FETCH FIRST 1 ROWS ONLY
           ),
           0
       ) AS lastStopId
    FROM   live.Trips t
    WHERE  t.Id = updateTripId 
    FETCH FIRST 1 ROWS ONLY;

IF TripId > 0 
THEN SET updateTripId = TripId;
ELSE OPEN TripSearch_cursor;
    FETCH FROM TripSearch_cursor INTO updateTripId;
CLOSE TripSearch_cursor;
END IF;

IF updateTripId > 0 
THEN OPEN minMaxStop_cursor;
    FETCH FROM minMaxStop_cursor INTO minStopId, maxStopId;
CLOSE minMaxStop_cursor;

UPDATE live.Trips
SET fkFirstStopId = minStopId,
    fkLastStopId = maxStopId
WHERE  intId = updateTripId;
END IF;

END

0 ответов

Другие вопросы по тегам