Sybase Central - Почему это поле VARCHAR конвертируется в ЦИФРОВУЮ? - PullRequest
0 голосов
/ 23 января 2019

В моей среде DEV я использую Sybase Central 16.0.0 build 2043, тогда как в своей среде UAT я использую 16.0.0 build 1948. У меня есть оператор BEGIN END, который использует курсор для перебора записей маленький стол. Одна из вещей, которую делает курсор, - это объединить все столбцы текущей строки в одну переменную LONG VARCHAR. В DEV код работает нормально

BEGIN 
    DECLARE concatenateTest LONG VARCHAR;

    DECLARE cursTEST CURSOR FOR
    SELECT A_NUMERIC_FIELD || '' || A_VARCHAR_FIELD AS ROW_DETAIL
    FROM MY_SCHEMA.MY_TABLE;

    OPEN cursTEST;
    FETCH NEXT cursTEST INTO concatenateTest;

    WHILE @@sqlstatus = 0 LOOP
        MESSAGE 'ROW_DETAIL: ', concatenateTest TYPE STATUS TO CLIENT;
        FETCH NEXT cursTEST INTO concatenateTest;
    END LOOP;

    CLOSE cursTEST;
END;

В UAT (более старая сборка) сценарий обнаруживает ошибку, поскольку по какой-то причине он пытается преобразовать содержимое A_VARCHAR_FIELD в значение NUMERIC. Я могу обойти эту проблему путем приведения, но почему поведение двух версий Sybase Central отличается?

...