Я выполняю следующую процедуру в DB2.
create procedure checkUpdate()
LANGUAGE SQL
begin
DECLARE EOF INT DEFAULT 0;
DECLARE STMT VARCHAR(200);
DECLARE COL_NAME NVARCHAR(40);
Declare col_name_cursor cursor for
select c.column_name from sysibm.tables t join sysibm.columns c on t.table_schema = c.table_schema and t.table_name = c.table_name where t.table_schema ='ARCHANA' and t.table_name = 'ADULT' and c.data_type not like 'CHARACTER%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET EOF = 1;
OPEN col_name_cursor;
WHILE EOF = 0 DO
FETCH FROM col_name_cursor INTO COL_NAME;
INSERT INTO GAUSSIAN_VALUES select CLASS,avg(COL_NAME),stddev(COL_NAME) from ADULT GROUP BY CLASS;
END WHILE;
CLOSE col_name_cursor;
end@
Однако при выполнении этого в командном окне DB2 я получаю следующую ошибку.
SQL0420N Недопустимый символ в аргументе символьной строки функции "DECFLOAT". SQLSTATE = 22018
Я провел некоторую отладку и обнаружил, что ошибка исходит из строки курсора Declare. Я изменил оператор выбора для курсора на «выбрать возраст от взрослого» для проверки, и ошибка исчезла. Ошибка не возникает при выборе целочисленных значений. Происходит в случае varchar. Я застрял и не знаю, какой ссылки здесь не хватает.
Спасибо!