Как преобразовать char в массив в базе данных Informix? - PullRequest
1 голос
/ 19 июля 2010

У меня есть хранимая процедура, подобная этой:

CREATE PROCEDURE Proc_Test(testvalue set(char(1000) not null))  RETURNING int;
        DEFINE z char(7000);
        LET z = ' ';

FOREACH
select * into z from table(testvalue)
END FOREACH;
return 1;
end procedure;

В связи с изменением требования я хотел бы изменить эту хранимую процедуру следующим образом:

CREATE PROCEDURE Proc_Test(testvalue char(7000) not null) RETURNING int;
            DEFINE z char(7000);
            LET z = ' ';
    CAST(cvg AS set(char(1000)));
    FOREACH
    select * into z from table(testvalue)
    END FOREACH;
    return 1;
    end procedure;

У меня есть некоторыенеизвестная синтаксическая ошибка.

Я знаю, что ошибка здесь:

CAST(cvg AS set(char(1000)));

Знаете ли вы лучший способ приведения переменной к другому типу для преобразования ее во время выполнения?

1 Ответ

0 голосов
/ 20 июля 2010

Загадка

Что именно должна делать ваша процедура?Насколько я вижу, это искаженный тест для "является ли строка в testvalue NULL"?Возможно ... На самом деле код безоговорочно возвращает 1, поэтому не ясно, что он даже выполняет нулевой тест, но процедура, вероятно, выполняется быстрее на пустой строке, чем на строке со значением.

Диагностика

Синтаксическая ошибка возникает из-за того, что 'cvg' не является определенной переменной в процедуре.Кроме того, CAST должен быть в RHS задания или чего-то подобного.И я не уверен, что вы можете разбить CHAR (7000) на семь полей CHAR (1000) в наборе с использованием приведения.

Fix?

Однако я не могусоветую, что делать, так как я не понимаю старые или новые требования.

...