大家好,我正在研究informix-4gl。我的程序即将从一个表添加和更新用户信息到多个表。这些表也必须从不同的在线服务器更新。主表正在使用名为“crsell”的online06 ' 表和其他表位于名为 'cmpurc' 的 online03 表上。这是我如何更新表的示例。
## 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