Длинный варчар в варчар Ingres DB

У меня есть INGRES DB 10.0

У меня есть переменная с типом данных LONG VARCHSR. в котором пользователи представляют длинную строку, тогда у меня есть цикл while, который берет +2000 символов из этой строки и помещает его в таблицу, где столбец имеет тип данных varchar (255). когда я пытаюсь скомпилировать эту процедуру, я получаю сообщение об ошибке E_US0971 Target list expression of type 'long varchar' cannot be coerced into local variable/parameter of type 'varchar'

вот мой цикл

    :notelinenumber = 1; 
    :i = 1;

WHILE :i < LENGTH(:note_text)
    do 
    select SUBSTRING (:note_text, :i, 1900) into :note_part;

    INSERT INTO NOTE
            (note_number,
             note_line_number,
             note_date_stamp,
             note_text)
    VALUES  ( :note_number,
              :notelinenumber,
              Date( 'now' ),
              :note_part); 

        :i = :i+1900;
        :notelinenumber = :notelinenumber+1;        
ENDWHILE;

здесь :note_text = тип данных long varchar, но note_part = varchar (255).

Как я могу преобразовать ту часть, которую я получил из цикла while из long varchar, в varchar (255)?

1 ответ

Ответить было так просто, просто нужно конвертировать длинный varchar в varchar

    :notelinenumber = 1; 
    :i = 1;

WHILE :i < LENGTH(:note_text)
    do 
    select varchar( SUBSTRING (:note_text, :i, 1900)) into :note_part;

    INSERT INTO NOTE
            (note_number,
             note_line_number,
             note_date_stamp,
             note_text)
    VALUES  ( :note_number,
              :notelinenumber,
              Date( 'now' ),
              :note_part); 

        :i = :i+1900;
        :notelinenumber = :notelinenumber+1;        
ENDWHILE;
Другие вопросы по тегам