Sybase Central-为什么将此VARCHAR字段转换为NUMERIC?

时间:2019-01-23 12:46:16

标签: sql stored-procedures sybase sqlanywhere

在DEV环境中,我正在使用Sybase Central 16.0.0 build 2043,而在UAT环境中,我正在使用16.0.0 build1948。我有一个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版本之间的行为不同?

0 个答案:

没有答案