在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版本之间的行为不同?