Привет всем, я работаю над informix-4gl. Мои программы собираются добавлять и обновлять информацию о пользователях из одной таблицы во многие таблицы. Таблицы также должны обновляться с другого онлайн-сервера. Основные таблицы работают в онлайн-режиме06 Таблица с именем «crsell», а другие таблицы находятся в таблице с именем «cmpurc» в сети03. Это пример того, как я обновляю таблицы.
## update CMPURC with latest purchaser info ##
LET ins_01 = NULL
LET ins_01 = "UPDATE bfs@", link_onln_no CLIPPED, ":cmpurc",
" SET cmp_purc_num = ", "'", p_cm_purc_num,
"'",",",
" cmp_purc_nme = ", "'",p_cmp_purc_nme,
"'",",",
" cmp_addr_1 = ", "'",p_cmp_addr_1, "'",",",
" cmp_addr_2 = ", "'",p_cmp_addr_2, "'",",",
" cmp_addr_3 = ", "'",p_cmp_addr_3, "'",
" WHERE cmp_proj_cde = ", "'", p_crsell.crse_proj_cde,
"'",
" AND cmp_phase_num = ", "'", p_crsell.crse_phase_num,
"'",
" AND cmp_lot_num = ", "'", p_crsell.crse_lot_num, "'"
В случае, если была информация от пользователя, которая содержит символ "'" или одинарную кавычку, такую как имя покупателя или адрес пользователя. Моя проблема заключается в том, что когда я обновляю таблицы, информация, содержащая символы одинарной кавычки, не будет обновлена до Таблицы cmpurc на сервере online03. появится сообщение об ошибке SQL-оператора с номером ошибки -201.
Я попытался преобразовать символ "'" в другой символ "^" и обновить таблицы. Затем я снова обновляю таблицу "cmpurc" информацией, содержащей символы "'". Этот шаг также приводит к ошибке. .Это способ преобразования символа.
LET rmks_lgth = LENGTH(p_crsell.crse_purc_nme)
FOR a = 1 TO rmks_lgth
IF p_crsell.crse_purc_nme[a] = "'" THEN
LET p_crsell.crse_purc_nme[a] = "^"
END IF
END FOR
преобразовать обратно в одинарные кавычки
LET rmks_lgth = LENGTH(p_cmp_purc_nme)
FOR a = 1 TO rmks_lgth
IF p_cmp_purc_nme[a] = "^" THEN
LET p_cmp_purc_nme[a] = "'"
END IF
END FOR
Я проверил, заменив символ "'" другими значениями, и это не привело к ошибке. Ошибка возникает только тогда, когда символ «'» переносится из таблицы «crsell» в «cmpurc». Я надеюсь, что кто-то может помочь мне решить мои проблемы. Мне жаль, если не хватает информации, которую я дал вы, потому что я не могу опубликовать изображение из-за отсутствия репутации, и я новый пользователь. Я очень признателен, если вы все можете помочь мне решить проблемы. большое спасибо
Теперь я собираюсь заменить одинарные кавычки на двойные. Я пытался изменить такой код, но он читает только одинарные кавычки. Кто-нибудь может подсказать? благодарю вас
LET rmks_lgth = LENGTH(p_crsell.crse_purc_nme)
FOR a = 1 TO rmks_lgth
IF p_crsell.crse_purc_nme[a] = "'" THEN
LET p_crsell.crse_purc_nme[a] = "''"
END IF
END FOR